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

一、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进行匹配并注入。

如:

spring方法注解是如何解析的 spring中的注解_spring方法注解是如何解析的

       @Resource的默认注入方式为ByName(根据名称进行匹配),若名称匹配不了,则会ByType(根据类型进行匹配注入)。@Resourece相当于@Autowired + @Qualifier。

如:

spring方法注解是如何解析的 spring中的注解_spring方法注解是如何解析的_02

扩展:@Sesource 里面有两个重要的属性,一个是name,一个是type。name对应名称进行匹配,type对应进行类型进行匹配。 

8. @Value                说明:注入普通属性

用法: @Value使用在字段上

        格式@Value("${xxx}"),其中xxx一般是从配置文件中值。

如:

        场景:在application.yml中读取name中的值如图

spring方法注解是如何解析的 spring中的注解_java_03

         例子1取name:

spring方法注解是如何解析的 spring中的注解_java_04

例子2取name

spring方法注解是如何解析的 spring中的注解_java_05

9. @Scope                说明:标注Bean的作用范围

说明: @Scope需要搭配能够实例化Bean的注解一起使用

        @Scope可以指定Bean的作用范围,这里的作用范围:是指被修饰的实例Bean对象的作用范围。其中有4个作用范围取值:singleton、prototype、reqeust、session。

        1. singleton表示: Bean的实例化个数为1个(在spring容器中只有1个实例化对象)。

spring方法注解是如何解析的 spring中的注解_字段_06

        2. prototype表示: Bean的实例化对象个数为多个(当使用这个对象时,就会创建一个新的) 。剩下的两个先不介绍了,用的少。

spring方法注解是如何解析的 spring中的注解_实例化_07

10. @PostConstruct                说明:使用在方法上标注该方法是Bean的初始化方法

11. @PreDestory                说明:使用在方法上标注该方法是Bean的前销毁方法

二、Spring新注解

1. @Configuration                说明:用于指定一个类是一个Spring的配置类

扩展:@Configuration附带了@Component功能

2. @ComponentScan                说明:用于指定Spring容器在初始化时要扫描的包

3. @Bean                说明:使用在方法上,表示将该方法的返回值存在Spring容器中

用法:方法上使用,方法的返回值存在Spring容器中。

如:

spring方法注解是如何解析的 spring中的注解_实例化_08

 解释: 在spring容器中存入了RestTemplate的对象,该Bean的id为restTemplate。

4. @PropertySource                说明:用于加载properties中的配置

5. @Import                说明:用于导入其它匹配类

注:后面会继续更新SpringMVC中的注解