SpringBoot
本文最后更新于 620 天前,其中的信息可能已经有所发展或是发生改变。

构建基础项目

编写代码

io.jbnrz.demo.DemoApplication.java

package io.jbnrz.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

io.jbnrz.demo.Controller.Controller.java

package io.jbnrz.demo.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
    @RequestMapping("/")
    public String root(){
        return "This is the root page";
    }
    @RequestMapping("/hello")
    public String hello(){
        return "This is the hello page";
    }
}

配置文件

优先级

properties > yml > yaml

转义字符

单引号 ” 不转义
双引号 “” 转义

读取配置

以 properties 为例

application.properties

# 应用名称
spring.application.name=demo

# 应用服务 WEB 访问端口
server.port=8080

name=JBNRZ
website=https://jbnrz.github.io/
jbnrz.name=CRZJBN
jbnrz.website=https://jbnrz.netlify.app/
test=${name}
web[0]=https://jbnrz.github.io/
web[1]=https://jbnrz.netlify.app/

Controller.java

package io.jbnrz.demo.Controller;

import io.jbnrz.demo.env.Info;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Controller {

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

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

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

    @Value("${web[0]}")
    private String web1;

    @Value("${web[1]}")
    private String web2;

    @Autowired
    private Environment env;

    @Autowired
    private Info info;

    @RequestMapping("/")
    public String root(){
        return "This is the root page";
    }

    @RequestMapping("/hello")
    public String hello(){
        return "This is the hello page";
    }

    @RequestMapping("/info")
    public String info(){
        return this.name + "<br>" + this.website + "<br>" + this.test;
    }

    @RequestMapping("/web")
    public String web(){
        return this.web1 + "<br>" + this.web2;
    }

    @RequestMapping("/env")
    public String env(){
        return env.getProperty("name") + "<br>" + env.getProperty("website");
    }

    @RequestMapping("/info2")
    public String info2(){
        return info.getName() + "<br>" + info.getWebsite();
    }
}

io.jbnrz.demo.env.Info.java

package io.jbnrz.demo.env;

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

@Component
@ConfigurationProperties(prefix = "jbnrz")
/*

@ConfigurationProperties
-> private String name = JBNRZ;
-> private String website = https://jbnrz.github.io/;


@ConfigurationProperties(prefix = "jbnrz")
-> private String name = CRZJBN;
-> private String website = https://jbnrz.netlify.app/;

*/
public class Info {

    private String name;
    private String website;

    // Alt + Insert 快捷生成
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    @Override
    public String toString() {
        return "Info{" +
                "name='" + name + '\'' +
                ", website='" + website + '\'' +
                '}';
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>io.jbnrz</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

server.servlet.context-path

  • 当在 application.properties 中设置
server.servlet.context-path=/hello
  • 则网站根目录从 http://127.0.0.1:8081/ 变为 http://127.0.0.1:8081/hello/

profile 配置

  • application.properties
spring.application.name=demo-profile
server.port=8080
  • application-dev.properties
# 开发环境
server.port=8081
  • application-test.properties
# 测试环境
server.port=8082
  • application-pro.properties
# 生产环境
server.port=8083
  • 当 application.properties 中设置 spring.profiles.active=dev
o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
  • 未设置
o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

profile 激活方式

  • 配置文件中设置:spring.profiles.activate=dev
  • 虚拟机参数:VM options > -Dspring.profiles.activate=dev
  • 命令行参数:java -jar xxx.jar –spring.profiles.activate=dev

内部配置加载顺序

application.properties < config/application.properties < /application.properties < /config/application.properties

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇