Java项目属性的配置解决方案
2023-09-27 14:19:48 时间
- application.properties文件可以方便地帮助细粒度地调整Spring Boot的自动配置
- 不需要告诉Spring Boot为你加载此文件,只要它存在就会被加载,Spring和应用程序代码就能获取其中的属性
- 不需要声明配置文件中值的类型,需要注入时再定义变量的类型即可
1 修改嵌入式Tomcat监听端口及访问前缀
点击运行,修改成功
2. yml VS properties
修改成功
运行结果
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 在配置中再引用配置
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 更简易的配置
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();
}
}
运行结果
6 应用多种配置环境
相关文章
- Java框架-MyBatis三剑客之MyBatis Generator(mybatis-generator MBG插件)详解
- 全文手敲代码,教你用Java实现扫雷小游戏
- java中获取当前时间和日期的方法
- Java 属性文件乱码问题
- java多线程之原子变量
- 利用 Java 反射给 User 类中的每个属性变量赋予值 .
- Effective Java 第三版——3. 使用私有构造方法或枚类实现Singleton属性
- java list分组 list里面分装的都是对象 按照对象的属性来分组
- 排查+解决 Java 内存泄漏,最基本的方法,你必须学会!
- Java的I/O类库的基本架构
- java内存泄露的理解与解决
- FastJson只序列化java对象的部分属性
- java运行jar命令提示没有主清单属性
- 40个Java多线程问题总结
- Java用户名登录学生信息管理系统并对其进行增删改查操作
- Java随记-超类,Java异常
- Java 基础(构造器,属性赋值先后顺序)
- Java 泛型例子
- 【Java 虚拟机原理】Class 字节码二进制文件分析 六 ( 属性类型 | Code 属性 | 属性名称索引 | 属性长度 | 操作数栈最大深度 | 局部变量存储空间 | 字节码长度 )
- java bean属性拷贝工具类比对(性能+功能)
- Java实现内部类