Class path扫描与组件的管理

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

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

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

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

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

        元注解

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

  • 类的自动检测与注册Bean

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

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

        spring bean管理的注解  

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

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

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

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

                        spring bean管理的注解

            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:用于成员变量

                    spring bean管理的注解

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

                

                例子2:用于方法中

                    spring bean管理的注解

            在xml中实现Qualifier


                spring bean管理的注解

        



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

                        spring bean管理的注解

  • @Resourse

相关文章:

  • 2021-06-15
  • 2022-12-23
  • 2022-12-23
  • 2022-02-25
  • 2022-12-23
  • 2022-01-22
  • 2021-06-28
  • 2021-07-06
猜你喜欢
  • 2022-12-23
  • 2021-06-23
  • 2021-06-21
  • 2021-10-11
  • 2021-10-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案