网站找人做的他能登管理员吗,网站建设一般多少钱,logo在线制作免费生成器无水印,如何不用百度推广做网站SpringBoot自动装配原理#xff1a;
EnableAutoConfiguration注解开启自动装配功能#xff0c;该注解通常放在应用的主类上。spring.factories文件位于META-INF目录下的配置文件中定义各个自动装配类的全限定名
当SpringBoot启动时#xff0c;会加载classpath下所有的spri…SpringBoot自动装配原理
EnableAutoConfiguration注解开启自动装配功能该注解通常放在应用的主类上。spring.factories文件位于META-INF目录下的配置文件中定义各个自动装配类的全限定名
当SpringBoot启动时会加载classpath下所有的spring.factories文件并根据定义的自动配置类全限定名将其实例化并添加到Spring应用上下文中。 自动配置类通常会通过Configuration注解标注ComponentScan/Import等实现各种逻辑
官方提供的starter命名spring-boot-starter-xxx 第三方提供的starter明明xxx-spring-boot-starter
SpringBoot常见的starter 自定义一个redisson的starter
一、创建按一个SpringBoot项目命名redisson-spring-boot-starter
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.3.1.RELEASE/version!-- 不让jar进行传递 避免jar包冲突--optionaltrue/optional/dependencydependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.13.1/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependency
/dependencies二、创建配置解析类RedissonProperties
ConfigurationProperties(prefix tian.redisson)
public class RedissonProperties{private String host localhost;private int port 6379;private int timeout;//get set 省略
}三、自动装配类
EnableConfigurationProperties(RedissonProperties.class)
Configuration
public class RedissonAutoConfiguration{private static final String PREFIX redis://;Beanpublic RedissonClient redissonClient(RedissonProperties redissonProperties){Config config new Config();//redis单机模式config.useSingleServer().setAddress(PREFIXredissonProperties.getHost():redissonProperties.getPort()).setConnectTimeout(redissonProperties.getTimeout());return Redisson.create(config);}
}四、resources目录下创建META-INF在此目录下创建spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.tian.RedissonAutoConfiguration五、使用自定义starter
再创建一个SpringBoot项目引入自定义starter
dependencygroupIdcom.tian/groupIdartifactIdcharge-sms-spring-boot-starter/artifactIdversion1.0-SNAPSHOT/version
/dependencyResissonProperties类中对host和port赋予了默认值所以在application.properties配置文件中若不配任何参数使用的就是默认值。 也可以配置
tian.redisson.hostlocalhost
tian.redisson.port6379
tian.redisson.timeout1000六、实际应用
Slf4j
RestController
RequestMapping(/test)
public class TestController{Resourceprivate RedissonClient redissonClient;GetMapping(/redisson)public String redisson(){}
}配置提示功能
在META-INF下面创建一个文件 additional-spring-configuration-metadata.json 文件内容如下
{properties: [{name: tian.redisson.host,type: java.lang.String,description: redis服务地址ip,defaultValue: localhost},{name: tian.redisson.port,type: java.lang.Integer,description: redis服务端口号,defaultValue: 6379},{name: tian.redisson.timeout,type: java.lang.Integer,description: redis连接超时时间,defaultValue: 1000}]
}重新打包在使用的项目里执行Reload All Maven再去properties中就会有对应的提示了。