SpringBoot中自动配置的原理及制作能自动装配的JAR包

  • Post author:
  • Post category:其他


在SpringBoot中,具有一定条件的类都会在容器中自动装配成容器中的一个Bean。在这里,需要了解一下配置类:由下面三个注解包装的类都是配置类:

  • @SpringBootApplication
  • @SpringBootConfiguration
  • @Configuration

个人理解为:

可以把配置类看成是一个容器,@SpringBootApplication定义的类是主配置类,是一个总容器,@SpringBootConfiguration和@Configuration定义的类是配置类,他们可以看成是一个容器,同时也具有Bean的特性。对外,他可以让自身类的一个属性与容器外的另一个Bean实现自动装配,对内,他是一个容器,可以包含Bean,或搜索Bean到自身的容器中。

配置类:由@SpringBootConfiguration、@Configuration注解的类所形成的配置类,可以打包成一个jar,把他制作成一个具有自动装配的jar包,自动装配后,在总容器中就会包含定义的配置 类中所有的Bean,如何实现,将会在下面讲到。



1.自动装配的原理及几种自动装配的方式:

当我们自定义一些类,打包成一个jar文件时,我们可以这jar包所包含的类自动装配到配置类中,且配置类可以层叠配置,但在SpringBoot项目中,只有一个主配置类,这个类是用注解@SpringBootApplication确定的,其他用@Configration和@SpringBootConfiguration定义的配置类可以有多个,他们能从jar包中引入类进行配置,也能够通过类方法产生Bean,还能够扫描自身项目中的包生Bean。@Configration和@SpringBootConfiguration定义配置类也可以把他看成是另外一个容器中的Bean,配置类里面的属性也可以从这个上级容器中进行自动装配。更为重要点的是:同级别的配置类可以通过@Import注解集中放到自定义的一个注解当中,再用这个自定义的注解定义到另外一个自定义的配置类上面,这样,最后面这个自定义配置类的容器,就包含所有的用@Import注解导入的其他同级别的配置类的Bean。简而言之:

所有的配置类的Bean,可以通过多各方法集合汇总到主配置类中。

具体方法如下:



(1)通过调用外部jar包装配Bean

  • 导放外部jar包

导放外部jar包,通过注解:@ComponentScan(basePackages = {“类所在包下面的路径”})。具体步骤是:

  1. 用@Configuration标注一个自定义类,形成一个配类类;
  2. 用注解@ComponentScan(basePackages = {“类所在包下面的路径”}),导放自定义jar包下面类所在的路径,这个路径可以是总路径,也可以细节到具体的子路径。

注意:自定义的jar包,要想包中的类能自动装配到配置类中,那么在自定义类的时候,需要在类的上面添加注解@Component,此注解需要导入依赖包:spring-context,如果创建的这个包想做为第三方依赖,那么导入的spring-context包的作用域最好设置为:provied(编写时需要)

具体代码示例:

  • 导放spring-context依赖:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.8</version>
</dependency
  • 自定义要打包到jar中的类,重点是要添加注解@Component
@Component
public class DreamClassImpl {
   

    public void showName() {
   
        System.out.println(



版权声明:本文为weixin_51098159原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。