springBoot 自动装配,SpringBoot自动配置,SpringBoot自动加载
================================
©Copyright 蕃薯耀 2021-12-22
https://www.cnblogs.com/fanshuyao/
一、定义配置类
import java.util.Map; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "lqy.java.auto", ignoreUnknownFields = true) public class MyProperties { private Integer id; private String name; private Map<String, String> map; private String from; private boolean enable; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public boolean isEnable() { return enable; } public void setEnable(boolean enable) { this.enable = enable; } @Override public String toString() { return "MyProperties [id=" + id + ", name=" + name + ", map=" + map + ", from=" + from + "]"; } }
二、定义application.properties文件
#lqy.java.auto.enable=false lqy.java.auto.id=10 lqy.java.auto.name=张三aa lqy.java.auto.map.a=a-一 lqy.java.auto.map.b=b-二
三、定义自动配置类:MyPropertiesAutoConfiguration
需要引入MyProperties:
@EnableConfigurationProperties(value = MyProperties.class)
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import lqy.java.validation.hibernate.bean.User; @Configuration(proxyBeanMethods = false) @EnableConfigurationProperties(value = MyProperties.class) @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @ConditionalOnClass(User.class)//User类在类路径中才生效 @ConditionalOnProperty(prefix = "lqy.java.auto", value="enable", havingValue = "true", matchIfMissing = true) public class MyPropertiesAutoConfiguration { @Bean public User getUser(MyProperties myProperties) { System.out.println("myProperties = " + myProperties); User u = new User(); u.setId(myProperties.getId()); u.setName(myProperties.getName()); System.out.println("User u = " + u); return u; } }
四、增加自动加载配置文件:spring.factories
在src/main/resources/META-INF/的路径增加spring.factories文件,没有META-INF则新建
src/main/resources/META-INF/spring.factories
spring.factories文件的内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
lqy.java.validation.hibernate.auto.MyPropertiesAutoConfiguration
五、springboot @ConfigurationProperties 中文乱码解决方案:
springboot @ConfigurationProperties 中文乱码解决方案见:
https://www.cnblogs.com/fanshuyao/p/15718594.html
(时间宝贵,分享不易,捐赠回馈,^_^)
================================
©Copyright 蕃薯耀 2021-12-22
https://www.cnblogs.com/fanshuyao/