- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
整个项目中所有重要的数据都是在配置文件中配置的,比如:
除了上述的内容,还有很多重要的属性都需要在配置文件中配置。如果想要查看 Spring Boot 更多系统配置项,Spring 的官网中已经整理好了这些信息。链接如下:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties
Spring Boot 配置文件主要分为两种格式:.properties
和 .yml
在创建 Spring Boot 项目时,项目默认会带一个 application.properties
配置文件
properties 相当于老款的配置文件,而 yml 相当于新款的配置文件,要想使用新款的配置文件,在 /src/main/resources
目录下手动创建一个 application.yml
文件就行
补充说明:
properties 是早期的配置文件的格式,也是 Spring Boot 项目创建后默认的配置文件格式。
properties 是以键值对的形式配置的,key 和 value 之间用 =
号连接。key 就是要配置的属性,value 就是要设置的值。
示例代码:
# 配置端口号
server.port=8080
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=1234
可以使用 @Value
注解来读取 properties 配置文件的配置内容。读取方式为,先在注入类中创建一个相关属性,再在该属性上增加 @Value
注解,具体使用方式为 @Value(value = "${要获取的配置文件中的属性}")
或 @Value("${要获取的配置文件中的属性}")
。
注意: 使用 @Value
注解获取配置文件的属性时要带 ${}
。
读取示例:
@Controller
@ResponseBody
public class ReadProperties {
@Value(value = "${server.port}")
private Integer port;
@Value("${spring.datasource.url}")
private String dbURL;
@RequestMapping("/port")
public Integer readPort(){
return port;
}
@RequestMapping("/dburl")
public String readDbURL(){return dbURL;}
}
properties 是以 key=value
的形式来进行配置的,会显得代码冗余。
yml 是 YAML(YAML Ain’t a Markup Language)的缩写,译为不是一种标记语言。yml 是一种可读性高、易于理解、用于表达数据序列化的格式。它可以用于简单表达清单(数组)、散列表、标量等数据形态。是一种专门用来写配置文件的语言,可用于多种编程语言项目的文件配置,如 Java、Go、Python、C++ 等等。
yml 是树型结构的配置文件,它的基础形式是 key: value
,yml 的基础语法具有以下的规则:
key: value
表示键值对关系,冒号后面必须有一个空格示例代码:
# 配置项目的端口号
server:
port: 8080
# 配置数据库连接的信息
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false
username: root
password: 1234
yml 配置:
# 整型
value: 10
# 布尔类型
boolean.value: true
# 字符串
string:
value1: 你好呀 \n aaa
value2: '你好呀 \n bbb'
value3: "你好呀 \n ccc"
# NULL
null.value: null
读取代码: 通过 @Value
注解来读取配置中的简单数据类型和 null
@Controller
@ResponseBody
public class readYml {
@Value("${value}")
private int val1;
@Value("${boolean.value}")
private Boolean val2;
@Value("${string.value1}")
private String val3;
@Value("${string.value2}")
private String val4;
@Value("${string.value3}")
private String val5;
@Value("${null.value}")
private Object val6;
@RequestMapping("/read")
public void read(){
System.out.println("整型 value:" + val1);
System.out.println("整型 value:" + val2);
System.out.println("整型 value:" + val3);
System.out.println("整型 value:" + val4);
System.out.println("整型 value:" + val5);
System.out.println("整型 value:" + val6);
}
}
注意: 在 yml 中,字符串如果使用了双引号包裹,那么特殊字符是不会转义的,比如 \n 就表示换行;而如果字符串什么都不包裹或者用单引号包裹,那么特殊字符就会自动进行转义。
yml 配置:
# 对象(写法一)
student:
id: 1
name: 张三
age: 15
# 对象(写法二)
user: {id: 2, username: 李四, password: 1234}
读取代码:
首先需要创建一个匹配配置文件中对象的类,并且读取配置文件中的对象就不能使用 @Value
注解,而需要使用 @ConfigurationProperties
注解,该注解放在创建的类上,并且有一个 prefix 属性用于设置配置文件中对应的 key。创建的类中必须要有 Setter 和 Getter 方法。
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
通过创建的类读取到配置文件的对象后,将该类注册到 Spring 容器中,当使用时,直接通过 @Autowired
或者 @Resource
注解注入就好。
@Controller
public class readYml {
@Autowired
private Student student;
@RequestMapping("/student")
public void read(){
System.out.println(student);
}
}
yml 配置:
# 集合(方式一)
dbtypes1:
fruits:
- 苹果
- 菠萝
- 西瓜
# 集合(方式二)
dbtypes2: {color: [红色,蓝色]}
读取代码:
yml 配置集合时,也需要通过 @ConfigurationProperties
注解来读取,该注解的 prefix 属性对应着上述 yml 配置的 dbtypes1 或者 dbtypes2。接下来创建一个匹配配置文件中集合的类
@Component
@ConfigurationProperties(prefix = "dbtypes1")
public class DBTypes {
private List<String> fruits;
public List<String> getFruits() {
return fruits;
}
public void setFruits(List<String> fruits) {
this.fruits = fruits;
}
}
通过创建的类读取到配置文件的对象后,将该类注册到 Spring 容器中,当使用时,直接通过 @Autowired
或者 @Resource
注解注入就好。
@Controller
public class readYml {
@Resource
private DBTypes dbTypes;
@RequestMapping("/dbtypes")
public void read(){
System.out.println(dbTypes.getFruits());
}
}
Spring Boot 中读取配置文件有以下5种方法:
它们的具体使用方式如下,为了方便测试,接下来将对下面的 application.yml
配置文件进行读取。
yml:
name: yml
desc: configuration
使用 @Value 可以读取单个配置项,代码如下所示:
@Controller
@ResponseBody
public class readYml {
@Value("${yml.name}")
private String name;
@RequestMapping("/read1")
public void read1(){
System.out.println(name);
}
}
使用 @ConfigurationProperties
可以按对象或者集合的形式来读取配置项,首先先创建一个和配置中对象和集合匹配的类,然后通过@ConfigurationProperties
读取配置文件中的对象或集合,然后注入到 Spring 中,当需要使用时,通过 @Autowired
或者 @Resource
注入就可以获取到,代码如下所示:
@Component
@ConfigurationProperties(prefix = "yml")
public class Yml {
private String name;
private String desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return "Yml{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
@Controller
@ResponseBody
public class readYml {
@Autowired
private Yml yml;
@RequestMapping("/read2")
public void read2(){
System.out.println(yml);
}
}
Environment 是 Spring Core 中的一个用于读取配置文件的类,将此类使用 @Autowired
或者 @Resource
注入到类中就可以使用它的 getProperty
方法来获取某个配置项的值,代码如下所示:
@Controller
@ResponseBody
public class readYml {
@Resource
private Environment enviroment;
@RequestMapping("/read3")
public void read3(){
System.out.println(enviroment.getProperty("yml.name"));
}
}
使用 @PropertySource
注解可以来指定读取某个配置文件,比如指定读取 application.yml
配置文件的内容,就可以在指定的类上添加 @PropertySource("classpath:application.yml")
,代码如下所示:
@Controller
@ResponseBody
@PropertySource("classpath:application.yml")
public class readYml {
@Value("${yml.desc}")
private String desc;
@RequestMapping("/read4")
public void read4(){
System.out.println(desc);
}
}
可以使用最原始的方式 Properties 对象来读取配置文件,代码如下所示:
注意: 使用原生方式读取配置文件,只支持 properties 格式的配置文件
@Controller
@ResponseBody
public class readYml {
@RequestMapping("/read5")
public void read5() {
Properties properties = new Properties();
InputStreamReader inputStreamReader = new InputStreamReader(
this.getClass().getClassLoader().getResourceAsStream("application.properties"),
StandardCharsets.UTF_8
);
try {
properties.load(inputStreamReader);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(properties.getProperty("properties.name"));
}
}
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
SpringBoot-Admin 服务监控 简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块, 提供了一组已经开箱即用的生产环境下常用
我想查找通过关键字匹配字段 nameEnglish 或 nameChinese 的模型列表。我花了一个多小时谷歌搜索但我做不到。请帮忙。 Springboot Mongo 入门示例 https://s
(请注意:在调查 this issue 时,我更好地发现了我在此处介绍的问题根源) 我对 Hibernate 和 SpringBoot 非常陌生。我的项目涉及一个搜索引擎,其中索引(javafx 客户
我最近有一个 Web 应用程序从 springboot 升级到 springboot 2。当我将其部署到 Tomcat 8 时,它似乎启动了,但没有完全启动。 在 localhost.2019-09-
我是 Spring boot 的新手...我在运行 Controller 时遇到问题, Description: Field todoService in com.springboot.todoCon
我有一个SpringBoot应用程序,它使用以下配置与PostgreSQL通信,通过AWS Beanstrik部署:。在我将AWS Aurora证书更新为rds-ca-ecc384-g1之前,一切都很
雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是
实在是不知道标题写什么了 可以在评论区给个建议哈哈哈哈 先用这个作为标题吧 尝试使用 国内给出的 AI 大模型做出一个 可以和 AI 对话的 网站出来 使用 智普AI 只能 在控制
一、介绍 在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储
Selenium Selenium是一个用于Web应用程序自动化测试的开源工具套件。它主要用于以下目的: 浏览器自动化:Selenium能够模拟真实用户在不同浏览器(如Chrome、Fire
一、简介 在实际的项目开发过程中,经常需要用到邮件通知功能。例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多。 早期的时候,为了能实现邮件的自动发送功能,通常会使用 Ja
SpringBoot:基于redis自定义注解实现后端接口防重复提交校验 一、添加依赖 org.springframework.boot spring
SpringBoot:使用Jackson完成全局序列化配置 一、测试准备 com.fasterxml.jackson.core jackson-cor
springboot:整合rocketmq 一、简易消息操作 生产者整合mq 导入依赖 org.springframework.boot
springboot:常用注解 一、spring常用注解 包扫描+组件标注注解 @Component:泛指各种组件 @Controller、@Service、@Repository都可以称为@Comp
我们经常需要在两个系统之间进行一些数据的交互,这时候我们就需要开发数据交互接口。 一般来说,遇到比较多的接口有HTTP接口、WebService接口、FTP文件传输。今天我要来学习一下在SpringB
背景 近期项目上线,甲方要求通过安全检测才能进行验收,故针对扫描结果对系统进行了一系列的安全加固,本文对一些常见的安全问题及防护策略进行介绍,提供对应的解决方案 跨站脚本攻击 XSS常发生于论坛评论等
1.排除 Spring-boot-starter 默认的日志配置 将原本的 spring-boot-starter 改为 org.springframework.boot
springboot:解决跨域问题 一、跨域简介 URL的组成: // 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 http://www.baidu.com:8080/ 只要协
一、自定义Starter 的思路: 创建一个Maven工程,创建三个模块 一个模块为demo-app,一个模块为demo-module,一个模块为demo-module-springboot-star
我是一名优秀的程序员,十分优秀!