注解分类(复杂类型不能注入List Set Map等)
1、用户创建bean对象
@Component
作用:相当配置了一个bean标签
位置:出现在类上
属性:value。含义是指定bean的id,当不写时默认为当前类的短命,首字母改小写
由此注解衍生的三个注解,与@Component的使用和属性一模一样
① @Controller 一般用于controller层
② @Service 一般用于service层
③ @Repository 一般用于持久层
2、用于注入数据的
@Autowired
作用:自动按照类型注入,只要有唯一的类型匹配就能注入成功,使用注解注入set方法不是必须的。所谓的唯一类型,举个例子,当dao层有一个实体类继承了UserDao接口,我们在service中使用注解,来使用UserDao属性,spring默认找它的实现类,如果唯一,则注入成功,如果不唯一,则有多个类实现UserDao接口,否则将变量名作为bean的id来查找。
@Qualifier
作用:在自动按照类型注入的基础上,再按照bean的id注入
属性:value,用于指定bean的id
注意:在给类成员注入数据时,不能独立使用,必须配合@Autowired,在给方法的形参注入数据时可以独立使用。
@Resource
作用:按照bean的id注入
属性:name,用于指定bean的id
示例:@Resource(name="userDao")
@Value
作用:用于注入基本类型和String类型的数据
属性:value,用于指定基本类型和String类型的值,还可以借助spring中的el表达式读取properties配置文件中的数据
示例:@Value("23")
3、用于改变作用范围的
@Scope
作用:用于改变bean的作用范围
属性:value,取值与xml配置里的scope属性一样
4、和生命周期相关的
@PostConstruct:用于绑定初始化方法
@PreDestroy:用于绑定销毁方法
5、其它注解
@Configuration
作用:将一个类作为配置类
@ComponentScan
作用:用于spring配置扫描包,可以完全脱离xml文件
位置:在类上
@Bean
作用:把方法的返回值注入spring容器
属性:name,用于指定bean的id,如果不指定,默认为方法名称
@Import
作用:导入其它配置类,使用@Import导入的配置类的实例不会进入spring容器
@PropertySource
作用:配置properties文件