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  默认按类型装配

原文地址:https://www.cnblogs.com/haibinggan-/p/9234557.html