文档章节

Spring中@value以及属性注入的学习

o
 osc_a22drz29
发布于 2019/03/23 22:52
字数 598
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1、简单的Java配置

 配置文件(jdbc.properties)  

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.username=root
jdbc.password=123

  编写一个配置类

 1 @Configuration
 2 @PropertySource("classpath:jdbc.properties")
 3 public class JdbcConfig {
 4 
 5     @Value("${jdbc.url}")
 6     String url;
 7     @Value("${jdbc.driverClassName}")
 8     String driverClassName;
 9     @Value("${jdbc.username}")
10     String username;
11     @Value("${jdbc.password}")
12     String password;
13 
14     @Bean
15     public DataSource dataSource() {
16         DruidDataSource dataSource = new DruidDataSource();
17         dataSource.setUrl(url);
18         dataSource.setDriverClassName(driverClassName);
19         dataSource.setUsername(username);
20         dataSource.setPassword(password);
21         return dataSource;
22     }
23 }


注解解读
@Configuration: 声明JdbcConfig是一个配置类
@PropertySource: 指定属性文件的路径
@value: 通过@value为属性注入值
@Bean: 通过dataSource()方法声明为一个注册Bean的方法,Spring会自动调用该方法,该方法的返回值会加入到Spring的容器中
然后就可以在任何位置注入DataSource

当配置上属性后便可以注入任何类使用了

 1 @RestController
 2 public class HelloController {
 3 
 4     @Autowired
 5     private DataSource dataSource;
 6     @Autowired
 7     private JdbcConfig jdbcConfig;
 8     
 9     @GetMapping("hello")
10     public String hello() {
11         System.out.println(jdbcConfig.getDriverClassName()+"=="+jdbcConfig.getUrl());
12         return "hello, spring boot!" + dataSource;
13     }
14 
15 }

打印结果

2、改造原有缺陷,SpringBoot推荐的方式

以上方法的注入方式,虽然属性数据注入进去了,但是不够强大,因为他只能注入基本数据类型。

在SpringBoot中,提供了一种新的属性注入方式,支持各种java基本数据类型及复杂数据类型

接下来我们重新创建一个类,用来属性注入

1 @Data
2 @ConfigurationProperties(prefix = "jdbc")
3 public class SpringBootProperty {
4     private String url;
5     private String driverClassName;
6     private String username;
7     private String password;
8 
9 }
注解解析:
  @ConfigurationProperties注解声明当前类为属性读取类
  prefix:读取数据文件中,前缀为jdbc的值
在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致
属性文件是定义在application.yml文件中的
 1 spring:
 2   application:
 3     name: property
 4 server:
 5   port: 8083
 6 jdbc:
 7   driverClassName: com.mysql.jdbc.Driver
 8   url: jdbc:mysql://127.0.0.1:3306/test
 9   username: root
10   password: 123

 

接下来在要使用的地方通过

@EnableConfigurationProperties(SpringBootProperty.class)来声明要使用SpringBootProperty这个类的对象
 1 @RestController
 2 @EnableConfigurationProperties(SpringBootProperty.class)
 3 public class HelloController {
 4 
 5     @Autowired
 6     private SpringBootProperty springBootProperty;
 7     @Autowired
 8     private DataSource dataSource;
 9     @Autowired
10     private JdbcConfig jdbcConfig;
11 
12     @GetMapping("hello")
13     public String hello() {
14         System.out.println("SpringBoot推荐的属性注入方式: " + springBootProperty.getDriverClassName() + "==" + springBootProperty.getUrl());
15         return "hello, spring boot!";
16     }
17 }

启动类

1 @SpringBootApplication
2 public class App {
3     public static void main(String[] args) {
4         SpringApplication.run(App.class);
5 
6     }
7 }

End......

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

格式编号始终显示2个小数位 - Format number to always show 2 decimal places

问题: I would like to format my numbers to always display 2 decimal places, rounding where applicable. 我想将数字格式化为始终显示2个小数位,并在适用的情况下四舍五入。 Examples...

富含淀粉
55分钟前
22
0
Docker可视化工具Portainer

1 前言 从没想到Docker也有可视化的工具,因为它的命令还是非常清晰简单的。无聊搜了一下,原来已经有很多Docker可视化工具了。如DockerUI、Shipyard、Rancher、Portainer等。查看对比了一番...

南瓜慢说
57分钟前
20
0
日志系统新贵 Loki,真香!!

最近,在对公司容器云的日志方案进行设计的时候,发现主流的ELK或者EFK比较重,再加上现阶段对于ES复杂的搜索功能很多都用不上最终选择了Grafana开源的Loki日志系统,下面介绍下Loki的背景。...

庞陆阳
今天
14
0
jQuery获取select onChange的值 - jQuery get value of select onChange

问题: I was under the impression that I could get the value of a select input by doing this $(this).val(); 我的印象是我可以通过执行$(this).val();来获取选择输入的值$(this).val()......

javail
今天
13
0
道翰天琼解密宇宙信息大脑三者最核心奥秘,破解认知智能基础理论(群聊形式)

三体论是探索研究宇宙,信息和人类大脑三者关系的理论体系。是认知智能的奠基理论体系之一。宇宙和信息,信息和人类大脑,人类大脑和宇宙,三者之间存在着某种未被完全揭示的奥秘。三体论的核...

jackli2020
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部