SpringBoot学习--------01SpringBoot启动与自动配置

一、SpringBoot自动配置原理

1.maven配置:

(1)父依赖:

SpringBoot项目需要添加父依赖进行项目管理,用来控制后续所需框架,场景的版本

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
</parent>

(2)配置场景:

传统的Spring、SpringMVC开发中在构建项目时,需要导入大量jar包,例如:Spring的jar包,mysql驱动的jar包;而在SpirngBoot中提供了场景配置,假如我现在需要开发Web项目,我们只需在maven中配置web场景,相关的jar包会自动导入;

<!--starter场景启动器,所有场景启动器的依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.3.4.RELEASE</version>
  <scope>compile</scope>
</dependency>

<!--web场景的启动器,配置后自动web开发中所需要的jar包依赖-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.自动配置:

SpringBoot在启动时,自动往容器加载了很多之前SpringMVC需要手动配置的组件,例如编码拦截器,视图解析器以及扫描注入bean等等,这些组件是如何加载的?

(1)@SpringBootApplication注解:

@SpringBootApplication注解式标注在SpirngBoot启动类上

@SpringBootApplication
public class BootMain {
    public static void main(String[] args) {
        ConfigurableApplicationContext application = SpringApplication.run(BootMain.class,args);
    }
}

@SpringBootApplication注解由以下注解构成:

(1)@SpringBootConfiguration:其实就相当于@Configuration代表当前是一个配置类
(2) @EnableAutoConfiguration:
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {}

在AutoConfigurationImportSelector类中,有一个方法:

public String[] selectImports(AnnotationMetadata annotationMetadata) {
		if (!isEnabled(annotationMetadata)) {
			return NO_IMPORTS;
		}
		AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry(annotationMetadata);
		return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
	}

getAutoConfigurationEntry(annotationMetadata)方法中调用了:

List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);

该方法是利用工厂加载 Map<String, List> loadSpringFactories(@Nullable ClassLoader classLoader);扫描spring-boot-autoconfigure-2.3.4.RELEASE.jar包里的META-INF/spring.factories配置文件,得到所需要加载的组件的名称,从而加载到容器中:
在这里插入图片描述
这么多的组件加载到容器中也不是全部生效,在springboot中有一个注解:@ConditionalOnXXXX,通过这个注解,可以为某个组件设置为按照条件进行生效。并且每一个组件默认都会和xxxProperties配置文件进行了绑定。这样我们可以通过修改properties配置文件去自定义改组件。

(3) @ComponentScan:指定扫描哪些,Spring注解;

3 注解总结:

1、@Configuration:

标注配置类,在该类里面的可以使用@Bean为某一些特定的方法进行标注,eg:

@Configuration
public class Config {
    @Bean
    public User user01(){
        return new User("zhangsan",13);
    }
    @Bean
    public Pet tomcat(){
        return new Pet();
    }
}

@bean标注的方法则会往容器中注入一个bean实体,类型为方法返回值类型,名称为方法名;

2、@Conditional

条件装配,例如上述所说的只有在某个条件下,才会注入bean到容器中。

3、@ConfigurationProperties

通过配置文件自动装配改注解所标注的类,但是该类必须在容器中,常配合@Component使用

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

yaml配置文件

person:
  age: 18
  user-name: zhangsan
  pet:
    name: xiaogou
    weight: 20.00
  birth: 2020/10/12
  boss: false
  all-pets:
    sick:
      - {name: xiaomao,weight: 19.00}
      - {name: xiaoniao,weight: 2.00}
    -health:
      - {name: xiaoji,weight: 0.00}
  animal:
    - haha
    - xixi
    - miemie
  interests: [足球,篮球,排球]
  salarys: 2000000.00
  score:
    english: 100
    math: 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Spring Boot和Docker Compose来部署多个项目是一种常见的做法,它可以有效地管理多个项目的部署和运行。 首先,我们需要为每个项目创建一个独立的Spring Boot应用程序。每个应用程序都应该有自己的独立配置文件、依赖项和实体类。这样,每个项目都可以独立运行和管理。 接下来,我们可以使用Docker Compose来管理这些项目的容器化部署。Docker Compose是一个用于定义和管理多个Docker容器的工具,它允许我们将多个容器配置集中在一个单独的文件中进行管理。 我们可以创建一个名为docker-compose.yml的文件,并在其中定义每个项目的容器配置。对于每个项目,我们可以指定要使用的镜像、容器的名称、端口映射等信息。在该文件中,我们还可以定义项目之间的网络连接、依赖关系等。 一旦我们定义了每个项目的容器配置,我们只需运行一个命令docker-compose up就可以启动所有项目的容器。Docker Compose将会自动下载并启动所需的镜像,并将所有容器连接到一个共享的网络中。 通过配置Docker Compose,我们可以同时管理多个项目的配置和依赖项,简化了部署和运行的过程。使用Docker Compose,我们可以轻松地扩展和管理多个项目,提高了应用程序的可伸缩性和可维护性。 总之,通过结合Spring Boot和Docker Compose,我们可以实现轻松部署、运行和管理多个项目的目标。这种方式可以极大地简化开发人员的工作,提高项目的部署效率和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值