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

组件扫描

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

指定被扫描的包
 <!--配置自动扫描的包
        base-package属性:指定一个基础包,Spring会自动扫描该包及其子包
        resource-pattern属性:精确指定扫描那个包下的类
    -->
<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的值是注解的全类名
                    注意:不能排除@Component注解,因为其他三个注解上都添加了该注解
                如果type的值是assignable,那么expression的值是接口或实现类的全类名
        -->
<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值