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

在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("this is showName method");
    }
    public int addNumber(int a, int b) {
   
        retu
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值