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 = "\u6CF0\u8FBE\u7C73\u5C14"

這是對中文字節編碼處理了。

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




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM