Spring(三)【注解注入】

使用注解实现DI依赖注入:

 

  准备工作:

    1)需要spring-aop.jar

    2)spring的配置文件加入spring-context.xsd的约束文件

 

  步骤:

    1)新建Maven

    2)加入spring依赖,必须又spring-aop.jar

    3)新建类,在类中加入注解

 

 

      注意:@Component()括号中的value可以省略,也可以不指定名称,框架会给对象默认名称,即首字母小写的类名

 

    4)新建spring配置文件,声明组件扫描器标签,指定注解所在的包名

 

 

 

和@Component功能相同的其他注解

  1)@Repository:放在Dao层的实现类上面,创建Dao对象,这样的对象可以访问数据库

  2)@Service:放在Service层的实现类上面,创建Service对象,表示业务层对象,能够有事务功能

  3)@Controller:放在处理器类的上面,创建处理器对象,处理器对象能够接受用户的请求

  以上三种注解,除创建对象外,还有其他功能,因此Component更像是父类,其他三种注解像是子类

  

指定扫描多个包:

  1)多次使用扫描器,分别制定不同的包

    <context:component-scan base-package="entity.student"/>

    <context:component-scan base-package="entity.school"/>

  2)使用分隔符,指定多个包

    <context:component-scan base-package="entity.student;entity.school"/>

  3)指定父包

    <context:component-scan base-package="entity"/>

 

@value:简单类型的属性赋值

  1)可以在属性定义上,这种方式则无需set方法(常用)

 

 

  

  2)在set方法上

 

 

 

 @Autowired:引用类型的自动注入,支持byName,byType,默认是byType

  属性:required,boolean类型,默认值是true

    true:引用类型必须赋值成功,如果失败,程序报错并终止运行

    false:引用类型赋值失败,程序正常执行,引用类型的值是null

  1)属性定义的上面,无需set方法(常用)

 

 

     注意:加上下方的@Qualifire(value="")后即可转变为byName,value可省略

  2)在set方法上面  

 

 

@Resource:来自JDK,可以给引用类型赋值,spring框架支持这个注解的使用,默认是byName自动注入,如果失败再使用byType,如果要只使用byName方式,则在@Resource(name="")添加具体的名称

  1)在属性定义的上面,无需set方法(常用)

  2)在set方法的上面

    注意:如果在使用@Resource注解时发现无法使用,需要在pom.xml配置文件中添加依赖    

<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>

  

 

posted @ 2020-04-24 23:42  Rhettttt  阅读(182)  评论(0)    收藏  举报