zoukankan      html  css  js  c++  java
  • Spring Boot项目属性配置

    前面已经讲解过了helloWord的实现。
    今天主要玩下application.properties项目的配置文件。
    点进去我会发现这个文件空空如也:

    添加两个配置,如下:
    server.port = 8888
    server.context-path = /HelloWorld

    tomcat的默认端口是8080,默认路径是根目录/。
    我们现在改成端口8080以及上下文路径 /HelloWorld。

    改完后保存,启动HelloWorldApplication类。
    页面输入http://localhost:8888/HelloWorld/hello
    你大爷就出来了。

    SpringBoot支持自定义属性
    我们在application.properties中加一个lol属性,属性值"泰达米尔"
    在配置文件中添加:

    lol = "u6CF0u8FBEu7C73u5C14"

    这是对中文字节编码处理了。

    package com.zznode.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloWorldController {
    
        @Value("$lol")
        public String lol;
        
        @RequestMapping("/hello")
        public String say(){
            return lol;
        }
        
    }

    页面里我们定义然后配置一个属性值,调用请求,可以直接返回配置的值。
    这是比较方便的功能。

    我们重启HelloWorldApplication类,
    页面输入http://localhost:8888/HelloWorld/hello
    显示下面内容:

    假如我们需要配置多个属性呢,比如musql的jdbc连接配置
    将下面四个属性写到配置文件中

    mysql.jdbcName=com.mysql.jdbc.Driver
    mysql.dbUrl=jdbc:mysql://localhost:3306/db
    mysql.userName=root
    mysql.password=123456

    这里依葫芦画瓢,和上面一样Controller里写四个属性。

    package com.zznode.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloWorldController {
    
        @Value("${lol}")
        public String lol;
        
        @Value("${mysql.jdbcName}")
        private String jdbcName;
        
        @Value("${mysql.dbUrl}")
        private String dbUrl;
        
        @Value("${mysql.userName}")
        private String userName;
        
        @Value("${mysql.password}")
        private String password;
        
        @RequestMapping("/hello")
        public String say(){
            return lol;
        }
        
        @RequestMapping("/showJdbc")
        public String showJdbc(){
            return "mysql.jdbcName:"+jdbcName+"<br/>"
                  +"mysql.dbUrl:"+dbUrl+"<br/>"
                  +"mysql.userName:"+userName+"<br/>"
                  +"mysql.password:"+password;
                  
        }
        
    }

    我们重启HelloWorldApplication类,
    页面输入http://localhost:8888/HelloWorld/hello
    显示下面内容:
    貌似这个操作好多次了,应该把这操作封装到一个方法里。

    到这里可能就会有人有疑问了。假如属性特别多,要写一大串,每个地方都使用,每个地方都要写这么多。
    我这里有个ConfigurationProperties配置方式
    新建一个MysqlProperties类把所有属性配置上去

    package com.zznode.demo;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * Mysql属性配置文件
     * 
     * @author user
     *
     */
    @Component
    @ConfigurationProperties(prefix = "msyql")
    public class MysqlProperties {
    
        private String jdbcName;
    
        private String dbUrl;
    
        private String userName;
    
        private String password;
    
        public String getJdbcName() {
            return jdbcName;
        }
    
        public void setJdbcName(String jdbcName) {
            this.jdbcName = jdbcName;
        }
    
        public String getDbUrl() {
            return dbUrl;
        }
    
        public void setDbUrl(String dbUrl) {
            this.dbUrl = dbUrl;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }

    执行前缀mysql以及加上@Component为组件,方便其他地方注入。

    HelloWorldController里改下

    package com.zznode.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloWorldController {
    
        @Value("${lol}")
        public String lol;
        
        @Autowired
        private MysqlProperties mysqlProperties;
        
        @RequestMapping("/hello")
        public String say(){
            return lol;
        }
        
        @RequestMapping("/showJdbc")
        public String showJdbc(){
            return "mysql.jdbcName:"+mysqlProperties.getJdbcName()+"<br/>"
                  +"mysql.dbUrl:"+mysqlProperties.getDbUrl()+"<br/>"
                  +"mysql.userName:"+mysqlProperties.getUserName()+"<br/>"
                  +"mysql.password:"+mysqlProperties.getPassword();
                  
        }
        
    }

    重启新项目可以看到和上面的一样的效果,这样很多地方需要用的时候只需要调用类就ok啦。



  • 相关阅读:
    bzoj 3243: [Noi2013]向量内积
    bzoj 4818: [Sdoi2017]序列计数
    AtCoder Grand Contest 023 F
    bzoj 4573: [Zjoi2016]大森林
    bzoj 5305: [Haoi2018]苹果树
    bzoj 5298: [Cqoi2018]交错序列
    codeforces496C
    codeforces534B
    牛客小白月赛13
    codeforces605A
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/9843618.html
Copyright © 2011-2022 走看看