春天创建Bean的6种方式详解

  


  本文讲解了在春天应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案。

  


  使用Spring XML方式配置,该方式用于在纯弹簧应用中,适用于简单的小应用,当应用变得复杂,将会导致XML配置文件膨胀,不利于对象管理。

  

<代码> & lt; bean id=皒xxx”类=皒xxx.xxxx”/祝辞
  

  


  

  

使用@ component, @ @ service, @Controler,注解

  

这几个注解都是同样的功能,被注解的类将会被春容器创建单例对象。

  
      <李> @ component:侧重于通用的Bean类李   <李> @ service:标识该类用于业务逻辑李   <李> @Controler:标识该类为Spring MVC的控制器类李   <李> @:标识该类是一个实体类,只有属性和Setter, Getter李   
        @ component   公开课用户{   }      

当用于弹簧引导应用时,被注解的类必须在启动类的根路径或者子路径下,否则不会生效。

  

如果不在,可以使用@ComponentScan标注扫描的路径。

  

spring xml也有相关的标签& lt; component-scan/祝辞

        @ComponentScan (value=https://www.yisu.com/zixun/{“com.microblog.blog”、“com.microblog.common”})   公开课MicroblogBlogApplication {   公共静态void main (String参数[]){   SpringApplication.run (MicroblogBlogApplication.class, args);   }   }      

方式3:
  

  

使用@ bean注解,这种方式用在春天引导应用中。

  

@ configuration标识这是一个弹簧引导配置类,其将会扫描该类中是否存@ bean注在解的方法,比如如下代码,将会创建用户对象并放入容器中。

  

@ConditionalOnBean用于判断存在某个Bean时才会创建用户Bean。

  

这里创建的Bean名称默认为方法的名称用户。也可以@ Bean (“xxxx”)定义。

        @ configuration   公开课UserConfiguration {   @ bean   @ConditionalOnBean (Location.class)   公共用户用户(){   返回新用户();   }   }      

弹簧引导还为我们提供了更多类似的注解。

  

春天创建Bean的6种方式详解

  

也和方式2一样,也会存在扫描路径的问题,除了以上的解决方式,还有使用弹簧引导起动器的解决方式

  

在资源下创建如下文件.META-INF/spring.factories。

  

弹簧引导在启动的时候将会扫描该文件,从何获取到配置类UserConfiguration。

  

春天创建Bean的6种方式详解

  

spring.factories。   

<代码> org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.log.config。UserConfiguration
  

  

如果不成功,请引入该依赖

        & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-configuration-processor   & lt; optional> true   & lt;/dependency>之前      

这个方式也是创建SpringBoot-starter的方式。

  


  

  

使用注解@ import,也会创建对象并注入容器中

        @ import (User.class)   公开课MicroblogUserWebApplication {   公共静态void main (String参数[]){   SpringApplication.run (MicroblogUserWebApplication.class, args);   }   }      

  

使用ImportSelector或者ImportBeanDefinitionRegistrar接口,配合@ import实现。

  

在使用一些弹簧启动第三方组件时,经常会看到@EnableXXX来使能相关的服务,这里以一个例子来实现。

  

<>强创建测试类
  

        @Slf4j   公共类的房子{   公共空间run () {   log.info(“房子....运行”);   }   }   @Slf4j   公开课用户{   公共空间run () {   log.info(“用户运行....”);   }   }   @Slf4j   公开课学生{   公共空间run () {   log.info(“学生....运行”);   }   }      

<>强实现ImportSelector接口
  

  

selectImports方法的返回值为需要创建Bean的类名称。这里创建用户类。

春天创建Bean的6种方式详解