美文网首页
一篇文章教会你SpringBoot配置

一篇文章教会你SpringBoot配置

作者: 付凯强 | 来源:发表于2018-03-20 18:23 被阅读0次

    0. 序言

    1. 端口配置

    • application.properties:配置文件
    ### 端口配置
    server.port=9090
    
    默认8080,改为9090

    2. 添加路径前缀

    ### 路径前缀
    server.servlet.context-path=/fkq
    
    访问/hello前面添加了/fkq

    3. 自定义属性(key)和值(value)

    ### 自定义配置属性和值
    sex:man
    
    //RestController注解:客户端可通过网络访问整个类
    @RestController
    public class HelloController {
        //读取配置文件的属性(key),通过属性获取属性值(value)
        @Value("${sex}")
        private String sex;
    
        //设置请求的参数和请求的方法
        @GetMapping(value = "/hello")
        public String sayHello() {
            return sex;
        }
    }
    

    4. 配置文件中使用自定义的属性和值

    ### 配置文件中使用配置的属性和值
    age:18
    person:"sex:${sex},age:${age}"
    
    //RestController注解:客户端可通过网络访问整个类
    @RestController
    public class HelloController {
        //读取配置文件的属性(key),通过属性获取属性值(value)
        @Value("${sex}")
        private String sex;
        @Value("${person}")
        private String person;
    
        //设置请求的参数和请求的方法
        @GetMapping(value = "/hello")
        public String sayHello() {
            return person;
        }
    }
    

    5. 读取配置文件的三种方式

    • @Value
    1. @Value并不能在任何Spring管理的Bean中使用,因为@Value本身是通过AutowiredAnnotionBeanPostProcessor实现的,它是BeanPostProcessor接口的实现类,因此BeanPostProcessor和BeanFactoryPostProcessor的子类中都不能使用@Value来注入属性,因为那时候@Value还没有被处理。
    //RestController注解:客户端可通过网络访问整个类
    @RestController
    public class HelloController {
        //读取配置文件的属性(key),通过属性获取属性值(value)
        @Value("${sex}")
        private String sex;
        @Value("${person}")
        private String person;
    
        //设置请求的参数和请求的方法
        @GetMapping(value = "/hello")
        public String sayHello() {
            return person;
        }
    }
    
    1. @Value注解支持SpEL表达式,如果属性不存在,可以为其提供一个默认值:
    @Value("${sex:girl}")
    private String sex;
    
    • Environment
      Environment是Spring Boot最早初始化的一个类,因此可以用在Spring应用的任何地方。
    import org.springframework.core.env.Environment;
    
        @Autowired
        private Environment environment;
    
    //设置请求的参数和请求的方法
        @GetMapping(value = "/hello")
        public String sayHello() {
            return environment.getProperty("server.port", String.class);
        }
    
    • ConfigurationProperties
    1. 通常情况下,将一组同样类型的配置属性映射为一个类更为方便,比如服务器配置,在application.properties中写成如下配置
    ### 自定义配置属性和值
    person.sex:man
    ### 配置文件中使用配置的属性和值
    person.age:18
    
    1. 以上三个配置属性都与web服务器配置有关,都有person前缀,因此可以使用注解@ConfigurationProperties来获取这一组实现,代码如下:
    @ConfigurationProperties("person")
    @Configuration
    public class ServerConfig {
        private String sex;
        private String age;
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    }
    
    //RestController注解:客户端可通过网络访问整个类
    @RestController
    public class HelloController {
    
        @Autowired
        private ServerConfig serverConfig;
    
        //设置请求的参数和请求的方法
        @GetMapping(value = "/hello")
        public String sayHello() {
            return serverConfig.getAge()+"&"+serverConfig.getSex();
        }
    }
    
    1. 在处理ConfigurationProperties注释的时候,自动会将"-"或"_"去掉,转化为Java命名规范,如将context-path转为contextPath。
    a:ConfigurationProperties和@Value功能差不多,建议使用ConfigurationProperties,因为它能将一组属性统一管理。
    b:@Value的优点是支持SpEL表达式,但SpEL表达式是把双刃剑,不容易调试和重构。
    

    6. 切换配置文件

    1. 创建debug和release配置文件,分别配置不同的端口。
    2. 在原有配置文件中配置想用的配置文件,这样就可以切换使用不同的端口。
    application.properties
    application-debug.properties
    application-release.properties
    
    application.properties:
    ### 切换配置文件
    spring.profiles.active=debug
    
    application-debug.properties:
    ### 端口配置
    server.port=9091
    
    application-release.properties:
    ### 端口配置
    server.port=9092
    

    7. 配置启动信息

    • 修改为自定义启动信息
    1. SpringBoot启动的欢迎信息,默认打印"Spring".
    2. 可以在SpringBoot项目的resources目录下新建一个banner.txt,内容如下:
    ######Hello Spring Boot
    
    1. 再次运行,会发现启动信息已经改变。
    • 修改为自定义图片
      拷贝图片到resources目录下,配置如下:
    # 配置banner信息
    # banner.txt 字符集
    spring.banner.charset=utf-8
    spring.banner.location=classpath:banner.txt
    spring.banner.image.location=classpath:banner.jpg
    # 图片高度,这里指转为字符的个数,越多越清楚
    spring.banner.image.height=20
    # 图片宽度,这里指转为字符的个数,越多越清楚
    spring.banner.image.width=20
    # 图片与左边的边距,默认为2个字符
    spring.banner.image.margin=2
    

    8. 配置日志

    推荐使用内置Logback日志输出框架

    #默认级别是INFO级别
    logging.level.root=info
    #org包名的类大多是第三方,没有必要显示INFO级别
    logging.level.org=warn
    #自己定义的类使用debug
    logging.level.com.example=debug
    # 默认没有输出日志到文件,指定日志输出文件
    logging.file=my.log
    # 支持控制台日志输出和文件输出进行格式控制
    # %level:输出级别 %date 输出时间 %logger输出包名+类名 {100}:长度限定 %thread:线程名 %M:日志发生时的方法名字 %m:日志消息 %n:换行
    logging.pattern.console=%level %date{HH:mm:ss} %logger{100}.%M %m%n
    logging.pattern.file=%level %date{ISO8601} [%thread] %logger{100}.%M %m%n
    

    9. 后续

    如果大家喜欢这篇文章,欢迎点赞;如果想看更多移动端后端Python方面的技术,欢迎关注!

    相关文章

      网友评论

          本文标题:一篇文章教会你SpringBoot配置

          本文链接:https://www.haomeiwen.com/subject/evtbqftx.html