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啦。



原文地址:https://www.cnblogs.com/zhujiabin/p/9843618.html