spring--基于注解的方式管理Bean

注解标识组件
  1. @Component
    标识一个受Spring IOC容器管理的普通组件
  2. @Repository (dao)
    标识一个受Spring IOC容器管理的持久化层组件
  3. @Service (service)
    标识一个受Spring IOC容器管理的业务逻辑层组件
  4. @Controller (servlet)
    标识一个受Spring IOC容器管理的表述层控制器组件
  5. 组件命名规则
    a)默认情况:使用组件的简单类名首字母小写后得到的字符串作为bean的id
    b)我们可以使用组件注解的value属性指定bean的id,value属性名可以省略
    spring--基于注解的方式管理Bean_第1张图片

注意:事实上Spring并没有能力识别一个组件到底是不是它所标记的类型,即使将 @Respository注解用在一个业务逻辑层组件上面也不会产生任何错误,所以@Respository、@Service、@Controller这几个注解仅仅是为了让开发人员自己明确当前的组件扮演的角色。

组件扫描

注意:通过注解的方式管理Bean还需要在原有jar包的基础上导入spring-aop-5.3.1.jar

指定被扫描的包
 
<context:component-scan base-package="com.atguigu.annotion" >
设置扫描的类

注意:让子标签context:include-filter起作用的前提需要将父标签的use-default-filters属性设置为false,禁用默认过滤器。

注意:需要将父标签的use-default-filters的值设置为false
                如果type的值是annotation,那么expression的值是注解的全类名
                如果type的值是assignable,那么expression的值是接口或实现类的全类名
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:include-filter type="assignable" expression="com.atguigu.spring.annotation.dao.UserDao"/>
设置不扫描的类
<context:component-scan base-package="com.atguigu.spring.annotation">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:exclude-filter type="assignable" expression="com.atguigu.spring.annotation.dao.impl.UserDaoImpl"/>
context:component-scan>

你可能感兴趣的:(Spring,spring)