Spring 扫描注入

Posted haibinggan-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 扫描注入相关的知识,希望对你有一定的参考价值。

  上一篇学到了怎么在spring的配置文件中进行bean的定义,但这种做法实际开发中很少采用的,将所有的类都写在配置文件里会造成配置文件的庞大混乱,为了解决这种复杂的配置,Spring中提供了自动的扫描注解配置:配置一个扫描包名称,就可以根据注解自动实现bean的配置管理。

  定义一个扫描的基础包名称,当容器启动的时候可以根据项目路径和包名称实现路径的平凑并且自动扫描所有的子目录的文件,同时使用Class.forName()实现类名称的反射加载。

 

配置扫描包之前需要引入context命名空间

【spring-base】修改spring-base.xml文件,追加扫描包。

  1、增加一个父扫描包

    <context:component-scan base-package="cn.lt.ltspring"/>

  2、也可以定义多个 扫描包

    <context:component-scan base-package="cn.lt.ltspring.dao.impl,cn.lt.ltspring.service.impl">

  3、之后再需要生成bean对象的类上使用规定的注解就可以生成bean对象了,spring提供有四种注解形式(其效果相同)

      @Component组件,相当于<bean id="dept" class="cn.lt.ltspring.vo.Dept">

      @Repository:一般用于数据层定义

      @Service:一般用于业务层注解

      @Controller:一般用于控制层注解

  4、之后就可以在另一个类中使用@Resource或者@AutoWired来使用这个bean对象了。

 

面试题:@Resource和@Autowired有什么区别?

  @Resource注解由JavaEE标准定义的资源注入,@Aurowired由Spring定义

  @Aurowired和@Resource都具有byName和byType的支持

  @Resource  默认按名称进行装配,通过name属性进行指定,@Autowired  默认按类型装配

 


以上是关于Spring 扫描注入的主要内容,如果未能解决你的问题,请参考以下文章

Spring 扫描注入

spring自动扫描的bean可以注入xml中配置的bean吗?

(转)Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring

Spring 依赖注入

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea(

Spring 注入静态对象使用方式