Spring boot學習筆記之二:SpringBoot項目屬性配置

上節我們創建了一個spring boot的第一個項目,在SpringBoot項目中有個application.properties項目配置文件,打開是空白 裏面可以配置項目相關的一些配置,編輯的時候IDEA會自動提示,Eclipse可能需要按alt+/ 提示出來。配置屬性有很多,我這裏只使用了部分屬性,接下來我們主要講一下關於spring boot的屬性配置的一些使用。

1. 修改tomcat端口和訪問路徑

上一講tomcat默認端口8080 默認路徑是根目錄/

我們現在改成 端口8888 以及上下文路徑/HelloWorld,我們在application.properties中寫入

改完後保存,重新啓動SpringbootDemoApplication類,我們還是去訪問上節中的controller

但是這個時候我們需要在頁面輸入:http://localhost:8888/HelloWorld/hello

結果出來了


這樣我們就修改了默認的訪問端口及訪問路徑


2 .SpringBoot自定義屬性

上邊我們使用的是SpringBoot提供的一些屬性配置,我們也可以自定義一些屬性

我們在application.properties中加一個自定義一個helloWorld屬性,屬性值爲:Spring Boot hello world

server.port=8888
server.context-path=/HelloWorld
helloWorld=Spring Boot hello world

我們controller中新建一個HelloWorldController2對其進行使用自定義屬性


package com.jd.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 使用自定義屬性
 */
@RestController //組合註解==>返回json數據,等同於@ReponseBody與@Controller
public class HelloWorldController2 {

    //通過Value註解注入 application.properties中定義的屬性
    @Value("${helloWorld}")
    private String helloWorld;

    @RequestMapping("/hello2")
    public String say(){
        return helloWorld;
    }
}

我們重啓SpringbootDemoApplication類,因爲我們之前設置了端口號和訪問路徑,所以接下來的訪問頁面輸入:http://localhost:8888/HelloWorld/hello2


看,結果是我們自定義的屬性可以訪問到了!!

假如我們要配置一個類別下的多個屬性,

比如mysql的jdbc連接配置

mysql.jdbcName=com.mysql.jdbc.Driver

mysql.dbUrl=jdbc:mysql://localhost:3306/db_diary

mysql.userName=root

mysql.password=123456

我們貼到application.properties(這裏自行復制過去即可,不演示了)

然後按照前面的方案,我們在Controller(新建HelloWorldController3)裏寫四個屬性;

package com.jd.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 使用自定義屬性
 */
@RestController //組合註解==>返回json數據,等同於@ReponseBody與@Controller
public class HelloWorldController3 {

    @Value("${helloWorld}")
    private String helloWorld;

    @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("/showJdbc")
    public String showJdbc(){
        return "mysql.jdbcName:"+jdbcName+"<br/>"
                +"mysql.dbUrl:"+dbUrl+"<br/>"
                +"mysql.userName:"+userName+"<br/>"
                +"mysql.password:"+password;

    }
}

重啓啓動類,頁面輸入:http://localhost:8888/HelloWorld/showJdbc


雖然也可以訪問的到,假如屬性很多 要寫一大串 假如多個地方使用 每個地方都得寫這麼多 不可取

下面我們介紹@ConfigurationProperties註解的配置方式

新建一個properties包,新建一個MysqlPropertity類 把所有屬性都配置上去

我們分析我們數據庫的配置都是以mysql.XXX來配置的,我們執行前綴是msyql

我們可以使用@Component作爲組件 方便其他地方注入,接下來是代碼演示,簡化在com.jd包下新鍵一個propertities包,新建一個MysqlProperties類

package com.jd.propertities;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created by Administrator on 2018/6/24.
 */
@ConfigurationProperties(prefix = "mysql")  //這個表示前綴爲mysql的自定義屬性
@Component
public class MysqlPropertity {

    /**
     * 屬性爲mysql.XXX,後面的後綴,注意變量名和配置文件中一致
     */
    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 getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getDbUrl() {
        return dbUrl;
    }

    public void setDbUrl(String dbUrl) {
        this.dbUrl = dbUrl;
    }
}

需要引入依賴到pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

再Controller(新建HelloWorldController4)中使用

package com.jd.controller;

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 HelloWorldController4 {

    @Autowired  //通過註解直接注入進來,我們便可以使用
    private MysqlProperties mysqlProperties; 

    @RequestMapping("/showJdbc2")
    public String showJdbc(){ 
        return "mysql.jdbcName:"+mysqlProperties.getJdbcName()+"<br/>"
                +"mysql.dbUrl:"+mysqlProperties.getDbUrl()+"<br/>"
                +"mysql.userName:"+mysqlProperties.getUserName()+"<br/>"
                +"mysql.password:"+mysqlProperties.getPassword();

    }
}

只需要定義MysqlProperties即可 方便很多 運行結果和之前一樣,代碼量大大減少



其他文章推薦:https://blog.csdn.net/saytime/article/details/74781708




發佈了29 篇原創文章 · 獲贊 41 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章