文章目录
在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 = {“类所在包下面的路径”})。具体步骤是:
- 用@Configuration标注一个自定义类,形成一个配类类;
- 用注解@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(