spring bean管理的注解

Class path扫描与组件的管理

    @Component是一个通用的注解,可用于任何bean

    @Repository,@Service,@Controller是更有针对性的注解

       @Repository:通常用于注解DAO类,即持久层

       @Service:通常用于注解Service类,即服务层

        @Controller:通常用于Controller类,机控制层(MVC)

        元注解

            许多Spring提供的注解,可以作为自己的代码,即"元数据注解",元注解是一个简单的注解,可以应用到另一个注解比如component,在使用元注解的时候除了value()外,元注解还可以允许有其他属性可以定制

  • 类的自动检测与注册Bean

        Spring可以自动检测所有类,并注册相应的Bean到ApplicationContext(IOC容器)中,

        为了让spring能够检测到这些类并注册相应的Bean,需要下面的内容。

          

        红线部分表示扫描定义的包下的所有类,并将其注册到IOC容器中。

        如何使用过滤器进行自定义的扫描:

                1、默认情况下,   类被自动发现并注册bean的条件是:使用@Component,@Repository,@Service,@Controller注解或者使用@Component的自定义注解。

                    2、可以通过过滤器修改上面的行为,如:下面的例子的XML配置忽略所有的@Repository注解并用”Stub“代替

                        

            3、还可以使用use-default-filters=”false   “禁用自动发现与注册

  • <context:annotation-config/>

        基于XML的SPring配置的标签 ,(包含上下文命名空间)

          <context:annotation-config/>仅会查找在同一个applicationContext中的Bean注解  

            


            定义bean:

                    1、扫描过程中组件被自动检测,那么bean名称是用BeanNameGenerator生成的(通常是类的名字的首字母小写)  ,@Component,@Repository,@Service,@Controller都会有个name属性用于显示的设置BeanName

                            例子:

                                    @Service("mySpringTest")这样在bean中的id就会是自己定义的名字,如果不写("mySpringTest")就会默认的类名的首字母小写。

                       2、这个自动命名可以自动修改规则(可以改成类名全体大写),实现的方法是BeanNameGenerator接口,并一定要包含的无参构造器,

                            覆盖好方法后要使用它需要在XML中引用该覆盖类。使用方法:

                                    <bean>

                                            <context:compontent-scan  base-package="org.test" name-generator="org.example.自定义的命名类名"/>

                                    </bean>


  • @Component,@Repository,@Service,@Controller

  • @Required
          
  • @Autowired

                  1、可以将Autowired注解为"传统"的setter方法(可以注解到set方法上)

                   2、可用于构造器或者成员变量(可以注解到构造器或者成员变量上)

                    3、可以使用Autowired注解那些众所周知的解析依赖性接口

                            比如:BeanFactory,ApplicationContext,Environment,ResourceLoader,ApplicationEventPublisher,andMessageSource

  • @Qualifier

            当按类型自动装配时可能有多个Bean实例的情况下,可以使用Qualifier注解来缩小范围(或者指定唯一),也可以用于指定单独的构造器参数或者方法参数

                例子1:用于成员变量

                    

                指定bean的id为main的bean进行自动注入

                

                例子2:用于方法中

                    

            在xml中实现Qualifier


                

        



                定义自己的qualifier注解并使用:

                        

  • @Resourse

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值