Spring中的注解详细介绍

注:标颜色的需要重点掌握

一、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一般使用在字段上

用法:

@Autowired的注入方式为ByType(根据类型进行匹配注入)。简单来说:优先根据接口类型进行进行匹配(接口只有一个实现类)。

@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中的注解

经验分享 程序员 微信小程序 职场和发展