- 参照之前xml方式的注解,可以大致如下:
- 用于创建对象bean的
- 用于注入数据的
- 用于改变作用域的
- 声明周期相关的
- 用于创建对象bean的:
- @Component:创建当前对象的bean,未指定bean id时,默认为类名首字母小写
- @Component(“accountService”)
- @Controller:表现层
- @Service:业务逻辑层
- @Repository:持久层
注意:Controller、Service、Repository三者作用一样,只是为了更好的描述三层关系 - @Component-scan:指定扫描路径,相当于xml中:<context:component-scan base-package=“anotation1”/>
- @Component:创建当前对象的bean,未指定bean id时,默认为类名首字母小写
-
用于注入数据的:
- @Autowired:
- 按照类型注入
- 作用于变量(可以是接口类,有对应的实现bean即可)、方法上
- 注入策略:
- 首先:根据类型判断(接口满足也可),
- 无匹配:失败退出
- 有唯一bean:注入成功
- 有多个bean:继续匹配
- 其次:多个bean时,再按照变量名是否等于bean id,匹配则成功,否则异常退出
- 首先:根据类型判断(接口满足也可),
- @Qualifier:
- value:限定注入名称:@Qualifier(“accountDao”)
- @Resource:
- Value:直接指定bean id注入
- @Value:
- 注入基本类型、String
- 语法:直接写入值,也可以是spel语法:${表达式}
- @Autowired:
-
注意事项:
- 变量注入时:@Qualifier不能单独使用,需要配合@Autowired
- 方法注入时:@Qualifier可以单独使用
- @Autowire、@Qualifier、@Reousrce:只能注入bean,不能注入变量
- 集合类型的:只能通过xml方式注入
- 用于改变作用域的
- @Scope:
- Value:5个阈值,常用的就是singleton、prototype
- @Scope:
- 声明周期相关的
- @PreDestroy:指定销毁方法
- @PostConstruct:指定初始化方法
这2个方法,就是xml中的init-method、destory-method