注:标颜色的需要重点掌握
一、Spring原始注解:
Spring原始注解主要代替<bean>标签的配置。
1. @Component 说明:使用在类上用于实例化Bean
2. @Repository 说明:使用在dao层类上用于实例化bean
3. @Controller 说明:使用在web层类上用于实例化bean
4. @Service 说明:使用在service层类上用于实例化bean
注* 1、2、3、4都是使用在类上而不是接口上
用法:@Component不带参数,默认值为类名首字母小写。如:在类User上使用@Component, 相当于@Component("user")。
代参数@Component("xxx"),可以自定义,xxx在spring容器 必须中唯一。
@Repository和@Controller和@Service与@Component用法一致。
5. @Autowired 说明:使用在字段上用于根据类型依赖注入
6. @Qualifier 说明:结合@Autowired一起使用根据名称进行依赖注入
7. @Resource 说明:相当于@Autowired和@Qualifier,按照名称进行注入
注* 5、6、7一般使用在字段上
用法:
根据类型进行匹配注入)。简单来说:优先根据接口类型进行进行匹配(接口只有一个实现类)。
@Qualifier要结合@Autowired用,不可以单独使用。当一个接口有多个实现类的时候,就要用到@Qualifier去指明需要注入的名称。[这里的名称就是 @Service("xxx") 中的 xxx] 这时就会根据名称ByName进行匹配并注入。
如:
@Resource的默认注入方式为ByName(根据名称进行匹配),若名称匹配不了,则会ByType(根据类型进行匹配注入)。@Resourece相当于@Autowired + @Qualifier。
如:
扩展:@Sesource 里面有两个重要的属性,一个是name,一个是type。name对应名称进行匹配,type对应进行类型进行匹配。
8. @Value 说明:注入普通属性
用法: @Value使用在字段上
格式@Value("${xxx}"),其中xxx一般是从配置文件中值。
如:
场景:在application.yml中读取name中的值如图
例子1取name:
例子2取name
9. @Scope 说明:标注Bean的作用范围
说明: @Scope需要搭配能够实例化Bean的注解一起使用
@Scope可以指定Bean的作用范围,这里的作用范围:是指被修饰的实例Bean对象的作用范围。其中有4个作用范围取值:singleton、prototype、reqeust、session。
1. singleton表示: Bean的实例化个数为1个(在spring容器中只有1个实例化对象)。
2. prototype表示: Bean的实例化对象个数为多个(当使用这个对象时,就会创建一个新的) 。剩下的两个先不介绍了,用的少。
10. @PostConstruct 说明:使用在方法上标注该方法是Bean的初始化方法
11. @PreDestory 说明:使用在方法上标注该方法是Bean的前销毁方法
二、Spring新注解
1. @Configuration 说明:用于指定一个类是一个Spring的配置类
扩展:@Configuration附带了@Component功能
2. @ComponentScan 说明:用于指定Spring容器在初始化时要扫描的包
3. @Bean 说明:使用在方法上,表示将该方法的返回值存在Spring容器中
用法:方法上使用,方法的返回值存在Spring容器中。
如:
解释: 在spring容器中存入了RestTemplate的对象,该Bean的id为restTemplate。
4. @PropertySource 说明:用于加载properties中的配置
5. @Import 说明:用于导入其它匹配类
注:后面会继续更新SpringMVC中的注解