SpringBoot-属性注入
单独放到一个类当中
把 jdbc.properties
名称改为 application.properties
内容还是和之前的内容一样的
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
jdbc.username=root
jdbc.password=root
创建一个类,名为 JDBCPropertis
,把所有属性添加到类当中,在类上添加相关注解
/**
* @author BNTang
*/
@Data
@ConfigurationProperties(prefix = "jdbc")
public class JDBCProperties {
String url;
String driverClassName;
String username;
String password;
}
然后在我们之前定义好的 JdbcConfig 中直接使用
/**
* @author BNTang
*/
@Configuration
@EnableConfigurationProperties(JDBCProperties.class)
public class JdbcConfig {
@Bean
public DataSource dataSource(JDBCProperties jdbcProperties) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
}
启动项目访问控制器即可,测试方式和之前文章中的一样。
也可以使用属性注入的方式, 也可以使用构造方法的形式
属性注入的方式
/**
* @author BNTang
*/
@Configuration
@EnableConfigurationProperties(JDBCProperties.class)
public class JdbcConfig {
@Autowired
private JDBCProperties jdbcProperties;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
dataSource.setUrl(this.jdbcProperties.getUrl());
dataSource.setUsername(this.jdbcProperties.getUsername());
dataSource.setPassword(this.jdbcProperties.getPassword());
return dataSource;
}
}
构造方法的方式
/**
* @author BNTang
*/
@Configuration
@EnableConfigurationProperties(JDBCProperties.class)
public class JdbcConfig {
private final JDBCProperties jdbcProperties;
public JdbcConfig(JDBCProperties jdbcProperties) {
this.jdbcProperties = jdbcProperties;
}
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
dataSource.setUrl(this.jdbcProperties.getUrl());
dataSource.setUsername(this.jdbcProperties.getUsername());
dataSource.setPassword(this.jdbcProperties.getPassword());
return dataSource;
}
}
直接注入
直接在方法上添加注解
注解名称 | 作用 |
---|---|
@ConfigurationProperties | 声明要注入的属性前缀,SpringBoot 会自动把相关属性通过 set 方法进行注入 |
如下就会通过 set 方法将相关的属性进行注入到 DataSource 中,如下所示:
/**
* @author BNTang
*/
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
}
属性文件使用 yaml 文件格式
配置文件除了使用 application.properties
类型, 还可以是后缀名为: .yml
或 .yaml
类型的,也会自动的加载,YAML 是一种简洁的非标记语言, 是以数据为中心, 使用空白缩进, 分行组织数据, 从而使得表示更加简洁易读。
示例如下所示,改造之前的 application.properties
为 application.yml
内容如下所示:
jdbc:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: root
user:
name: BNTang
age: 10
language:
- Java
- React
JDBCProperties 内容如下所示:
/**
* @author BNTang
*/
@Data
public class JDBCProperties {
String url;
String driverClassName;
String username;
String password;
class User {
String name;
String age;
List<String> language;
}
}
注意事项:如果有两个配置文件一个 .properties
和一个 .yml
,会取两个文件的并集, 如果有相同的名称, 会以 properties
为主。
标签:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具