zoukankan      html  css  js  c++  java
  • 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/

    今天越懒,明天要做的事越多。
  • 相关阅读:
    FreeCAD框架解析
    Python源码的编译与加密
    centos 8及以上安装mysql 8.0
    浮点数运算丢失精度
    使用 Nginx 代理内网 GitLab 并确保 SSH / HTTP 克隆地址正确
    如何实现一个简易版的 Spring
    Spring 是如何造出一个 Bean 的
    从CPU缓存看缓存的套路
    Java 集合类 List 的那些坑
    react 项目中使用antd框架,对导航多层渲染
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/15719436.html
Copyright © 2011-2022 走看看