springBoot 自动装配,SpringBoot自动配置,SpringBoot自动加载

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/

posted @ 2021-12-22 14:39  蕃薯耀  阅读(188)  评论(0编辑  收藏  举报