tomcat的自动配置内置于springboot的autoconfiguration中 。参考tomcat的自动配置 https://www.cnblogs.com/zhaokejin/p/15626392.html
mybatis-plus的配置没有被springboot包括 。因此mybatis-stater中包含一个包mybatis-spring-boot-autoconfigure
,这其中配置了需要自动配置的类 。
因此我们也可以在自己的项目下新建 /META-INF/spring.factories
,并配置自动配置类 。
@Import@Import 用于导入配置类或需要前置加载的类 。被导入的类会注册为Bean,可直接作为Bean被引用 。它的 value 属性可以支持三种类型:
- 被
@Configuration
修饰的配置类、或普通类(4.2版本之后可以) 。 ImportSelector
接口的实现 。ImportBeanDefinitionRegistrar
接口的实现 。
@Import
的配置@Configuration@Import(value = https://www.huyubaike.com/biancheng/{TestA.class, TestB.class, MyImportSelector.class, MyImportBeanDefinitionRegistrar.class})public class ConfigurationTest {}
导入一个普通类package com.example.ssmpdemo.entity;public class TestA {public void fun(){System.out.println("testA");}}
导入一个配置类package com.example.ssmpdemo.entity;import org.springframework.context.annotation.Configuration;@Configurationpublic class TestB {public void fun(){System.out.println("testB");}}
通过实现 ImportSelector
接口import org.springframework.context.annotation.ImportSelector;import org.springframework.core.type.AnnotationMetadata;public class MyImportSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{"com.example.ssmpdemo.entity.TestC"};}}
通过重写 ImportBeanDefinitionRegistrar
的 registerBeanDefinitions
方法 。import com.example.ssmpdemo.entity.TestD;import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.beans.factory.support.RootBeanDefinition;import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;import org.springframework.core.type.AnnotationMetadata;public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {RootBeanDefinition root = new RootBeanDefinition(TestD.class);registry.registerBeanDefinition("testD", root);}}
@ConfigurationProperties- 支持常见的下划线、中划线和驼峰的转换 。支持对象引导 。比如:
user.friend.name
代表的是user对象中的friend对象中的name - 需要有
set()
方法 - 只添加
@ConfigurationProperties(prefix = "xxx")
并不会生效,需要配合@Configuration
让容器识别到 。 @EnableConfigurationProperties(value = https://www.huyubaike.com/biancheng/ConfigData.class )
会将value中指定的类注册为Bean,可直接用@AutoWired
引用 。
- 定义一个类用来记录所有字段,并使用
@ConfigurationProperties(prefix = "xxx")
将数据注入到ConfigData
中 。
package com.example.ssmpdemo.entity;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;/** * 用来记录Configuration的数据 * @author wangc */@Data@ConfigurationProperties(value = "https://www.huyubaike.com/biancheng/spring.datasource.druid")public class ConfigData {private String driverClassName;private String url;private String username;private String password;}# 对应的yml文件spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:5506/ssmpdemo?serverTimezone=UTCusername: rootpassword: xxxx
- 使用
经验总结扩展阅读
- 弹性分布式数据集 RDD及常用算子
- 淀粉用冷水还是热水
- pytorch、paddlepaddle等环境搭建 深度学习环境搭建常用网址、conda/pip命令行整理
- 之六 2流高手速成记:从SpringBoot到SpringCloudAlibaba
- 三十九 Java开发学习----SpringBoot整合mybatis
- SpringBoot 阶段测试 1
- 三 SpringBoot - Ribbon客户端负载均衡,Zuul网关,Config配置中心
- SpringBoot Starter缘起
- SpringBoot自定义注解+异步+观察者模式实现业务日志保存
- 装配 SpringBoot自动配置流程