7.Spring--使用注解注入Bean

使用注解的方式注入bean

Spring能够从classPath下自动扫描,实例化具有特定注解的类,Spring提供了使用注解的方式注入bean。首先需要在xml中开启解析注解的支持,因为默认情况下是不支持的。
1.引入context命名空间

  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation=http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd

2.在xml中开启注解的支持

  
    

3.在xml中指定需要扫描的包或者使用java声明
** 3.1使用xml声明**


该注解同时还会注册一个AutowireAnnotationBeanPostProcessor实例,该实例会自动装配被@AutoWired,@Resource,@Inject注解标注的对象

3.2使用java代码声明
给一个类标注上@ComponentScan注解,这个注解能够在spring中启用注解扫描的方法,如果没有其他配置的话,默认会扫描和被标注该注解的类同一个包下的其他类。

7.Spring--使用注解注入Bean_第1张图片
Paste_Image.png

同时可以通过basePackages指定扫描哪些包

@ComponentScan(basePackageClasses = {ComponentTest.class})

使用component注解

标识了一个类作为一个组件受spring容器管理,并且告诉spring组件要为这个类创建一个bean,没有必要在xml中显示的配置被标记的类的bean了。
component中的参数表示该bean对应的唯一id

7.Spring--使用注解注入Bean_第2张图片
Paste_Image.png

使用Required注解

1.Required用来标注setBean属性的方法(。例如:setName,setCar),一旦在set方法上配置了该注解,那么spring的配置xml文件中一定要声明该属性,否则会报错

7.Spring--使用注解注入Bean_第3张图片
Paste_Image.png

2.在xml中对属性进行声明

Paste_Image.png

使用Autowired注解

1.该注解可以放在字段,方法,构造器,一切具有参数的方法都可以被注解。默认情况下使用@AutoWired注解注释的属性都用被配置(被spring容器管理)
1.1ControlTest被controller注解标注,被spring容器管理

7.Spring--使用注解注入Bean_第4张图片
Paste_Image.png

1.2 ControlTest被AutoWired注解标注,spring容器会自动为它寻找合适的bean创建
7.Spring--使用注解注入Bean_第5张图片
Paste_Image.png

2.允许该对象不被注入
AutoWired(required=false)表示允许容器找不到该bean,如果容器找不到对象,不会抛出异常。

Paste_Image.png

2.1当容器中有多个符合条件的注解时,使用@Qualifier注解标识使用哪一个bean,注意@Qualifier中参数为类的名字

Paste_Image.png
Paste_Image.png
7.Spring--使用注解注入Bean_第6张图片
Paste_Image.png

泛型注入

Spring可以为子类自动注入子类对应的泛型类型。在子类中调用check方法,会发现对象是UserReporstory


7.Spring--使用注解注入Bean_第7张图片
Paste_Image.png
7.Spring--使用注解注入Bean_第8张图片
Paste_Image.png
Paste_Image.png

你可能感兴趣的:(7.Spring--使用注解注入Bean)