@Autowired 自动注入 默认是类型匹配
使用配置文件需要set ,使用注解不需要,只需要类属性
@Autowired可以和@Qualifier("beanName") 配合着使用
@Qualifier("beanName")
多个相同类型的bean,标注名称
@Scope
单例模式还是原型模式
@Resource
@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
@Autowired是Spring的注解,@Resource是J2EE的注解
@Controller
@Controller对应控制层的Bean
@Service
声明类是一个bean,且@Service对应的是业务层Bean
Bean使用了该注解,默认id为类名首字母小写。
@Service("abc") bean起名字叫abc,括号内为特别定义的beanName
@ Repository
@Repository对应数据访问层Bean
@Component
@Component是所有受Spring 管理组件的通用形式,无法分组的Bean可以使用该注解,@Component不推荐使用。
@Lazy 表示是否延迟初始化(使用的时候再初始化)
注:
1.使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包)。
<context:component-scan base-package="a.b.c"/>
2.Spring通配符:一个*代表匹配任意字符,两个*匹配0或多层目录
如系统包含如下三个package:com.aaa.bbb.ccc com.aaa.bbb.ddd com.eee.fff.ccc
如果在Spring中配置com.aaa.bbb.*,spring将会扫描com.aaa.bbb.ccc com.aaa.bbb.ddd两个包
如果在Spring中配置com.**.ccc,会扫描com.aaa.bbb.ccc com.eee.fff.ccc两个包
在网上看到一个问题,aaa包下面有一个A类,一般我们配置aaa包,即可扫描
配置aaa.*不能扫描,配置aaa.**可以扫描,这是为什么呢,因为aaa.*代表包的形式必须是aaa.xxx类型,如果我们目标Bean在aaa.xxx下自然可以扫描到,但在aaa下,不能被扫描。那为什么aaa.**可以被扫描呢,因为**代表0到多的概念,所以aaa包下的bean可以被扫描到。
end
如有错误,欢迎指正