Java项目属性的配置解决方案

简介: Java项目属性的配置解决方案
  • application.properties文件可以方便地帮助细粒度地调整Spring Boot的自动配置
  • 不需要告诉Spring Boot为你加载此文件,只要它存在就会被加载,Spring和应用程序代码就能获取其中的属性
  • 不需要声明配置文件中值的类型,需要注入时再定义变量的类型即可

1 修改嵌入式Tomcat监听端口及访问前缀

1.png

点击运行,修改成功

1.png

2. yml VS properties

1.png

修改成功

1.png

运行结果

1.png

3. 动态注入外部属性文件中的值

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Shusheng Shi on 2017/5/3.
 */
@RestController
public class HelloController {
    @Value("${cupSize}")
    /*属性定义在外部属性文件(application.yml),使用占位符将其插入到bean中,Spring装配中,占位符形式为使用${...}包装的属性名称,
    若又依赖于组件扫描和自动装配来创建和初始化应用组件,就使用@Value,使用方法与@Autowired非常相似
    此时属性文件中cupSize的值就被注入到下面ccupSize变量中了*/
    private String cupSize;
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String say() {
        return cupSize;
    }
}

4.在配置中再引用配置

 1.png

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Shusheng Shi on 2017/5/3.
 */
@RestController
public class HelloController {
    @Value("${content}")
    private String content;
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String say() {
        return content;
    }
}

5 更简易的配置

1.png

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * Created by Shusheng Shi on 2017/5/3.
 */
@Component
/*表明该类作为组件类,并告知Spring要为此类创建bean,无需再显示配置该bean,Spring会做好一切*/
@ConfigurationProperties(prefix = "girl")
/*prefix:用来选择哪个属性的前缀名字来绑定
此示例为将girl前缀下的属性映射进来*/
//当配置文件属性较多时,将配置文件属性写到一个类中,需要属性值可以随意,而不需使用@Value一个一个累到死地注入
public class GirlProperties {
    private String cupSize;
    private Integer age;
    public String getCupSize() {
        return cupSize;
    }
    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

相应的控制器类改为

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Shusheng Shi on 2017/5/3.
 */
@RestController
public class HelloController {
    @Autowired
    private GirlProperties girlProperties;
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String say() {
        return girlProperties.getCupSize();
    }
}

运行结果

1.png

6 应用多种配置环境

1.png

1.png

1.png

1.png

目录
相关文章
|
7天前
|
Java
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
本文介绍了如何使用IDEA(IntelliJ IDEA)创建一个新的Java项目,并运行一个简单的Java程序输出"Hello Word"。文章详细展示了创建项目的步骤,包括选择JDK版本、设置项目名称和路径、创建包和类,以及编写和运行代码。最后,还展示了如何通过IDEA的运行功能来执行程序并查看输出结果。
28 4
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
|
3天前
|
传感器 监控 数据可视化
【Java】智慧工地解决方案源码和所需关键技术
智慧工地解决方案是一种新的工程全生命周期管理理念。它通过使用各种传感器、数传终端等物联网手段获取工程施工过程信息,并上传到云平台,以保障数据安全。
22 7
|
5天前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
7天前
|
算法 Java
Java项目不使用框架如何实现限流?
Java项目不使用框架如何实现限流?
19 2
消息中间件 缓存 监控
81 0
|
22天前
|
Java 编译器 测试技术
|
2月前
|
jenkins Java Shell
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
Java相关配置
Java相关配置
1256 0
|
3天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
16 2
|
7天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理