Spring注解驱动知识点简单记录一

一:使用@Configuration和@Bean等组件替代xml方式将bean对象添加到spring容器中

  1. 创建一个实体类
        
  2. 创建配置类
           
       注解解释:
           @Configuration:这个注解是告诉spring这是一个配置类,相当于xml文件
           @Bean:给容器注册一个Bean,类型为返回值的类型,bean对象的id名称默认为方法名,
                           也可以自定义bean的id名称,例如:@Bean("person02"),那么这个Person对象
                           的id名称就是person02
  3. 测试类MainTest
     ⑴通过类型获取bean对象
          
          注意:AnnotationConfigApplicationContext:可以实现基于Java的配置类加载Spring的应用上下文
          效果:
                
      ⑵ 通过id名称获取bean对象
           
          效果:
              
        ⑶通过类型获取bean的id名称,然后通过id名称获取bean对象
              
             效果:
                 

          

二:自动扫描组件之@ComponentScan

  1. 简介
       @ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。
  2. 下面我们创建web,service,dao层的类
           
       
       
  3. 创建配置类
     
     注意:
          @ComponentScan:扫描com.test路径下所有包的类
  4. 创建测试类
     
     注意:如上图,首先使用AnnotationConfigApplicationContext加载配置类MainConfig,获取到
                ApplicationContext上下文对象,然后通过这个上下文对象去获取通过配置类扫描加载
                那些使用注解创建的bean对像,例如通过@Controller,@Service,@Repository等注
                解创建的bean对象。ApplicationContext上下文获取到容器中的这些对象后打印出来。
     效果:
         
  5. 下面我们在扫描加载并且创建bean对象到spring容器中时可以排除一些不需要创建的bean对象。
     
     注意:
        excludeFilters:表示在扫描加载的路径下排除一些不需要加载到容器中的bean对象,
                                  使用@Filter进行过滤,在@Filter中使用注解类型过滤, 这里我们不
                                  需要加载 Controller和Service类型的bean对象到容器中去。 
    运行测试类后的效果:
         
  6. 当然在@ComponentScan注解中还有其他的一些注解规则,例如includeFilters方法,表示
     只加载创建哪些类型的bean对象。但是这个includeFilters必须和useDefaultFilters一起用才
     会生效,否则不生效。
      
     效果:
       
  7. 上面我们使用includeFilters指定过滤规则时使用了FilterType.ANNOTATION的方式
     去过滤的,其实在FilterType中还有其他的方式,如下:
     ⑴FilterType.ANNOTATION:是按照注解方式
     ⑵FilterType.ASSIGNABLE_TYPE:是按照给定的类型,比如我们现在指定加载BookService类型。
         
         效果:
          
      ⑶FilterType.ASPECTJ:使用ASPECTJ表达式方式(这个基本不会使用)
      ⑷FilterType.REGEX:使用正则表达式方式(这个不常使用)
      ⑸FilterType.CUSTOM:使用自定义规则方式,如下:
           a:创建实现了TypeFilter的类
                  
                  
                  注意:
                         MetadataReader:表示的是读取到的当前正在扫描的类的信息
                         MetadataReaderFactory:表示可以获取到其他任何类信息
           b:在配置类中使用我们自定义的过滤类
                 
           c:运行测试类的效果:
                
                

三:组件作用域之@Scope

  1. 简介
     @Scope作用域它存在4种情况:
      a:prototype,表示多实例的,每一个获取bean对象,都会创建一次
      b:singleton,表示单实例的(默认的@Scope也是单实例的),在IOC容器启动的时候就会调用方法创建
            对象放到IOC容器中,以后每次获取就是直接从容器中拿。
      c:request,同一次请求创建一个实例
      d:session,同一个session创建一个实例
  2. 创建一个配置类,创建person对象,并且默认为单实例
     a:配置类
                  
     b:测试类
            
     c:效果:
           
  3. 设置@Scope为多实例试试看效果:
      
      测试类:
       
      效果:
        

        
四:懒加载之@Lazy

  1.  简介
      首先懒加载是专门针对单实例bean的。单实例bean一般是默认在容器启动的时候创建对象,而
      如果我们使用懒加载后,就会变成容器启动的时候不创建对象,会在第一次使用(获取)bean对象
      的时候去创建bean对象并且初始化。
  2. 实例:我们不使用懒加载时的效果:
      a:配置类
                  
      b:测试类
              
      c:效果
         
  3. 实例:我们使用懒加载时的效果:
      a:在配置类创建person对象的方法上添加懒加载
        
     b:测试类
        
     c:效果
        

文章目录

猜你喜欢

转载自blog.csdn.net/K_520_W/article/details/83930503
今日推荐