Spring中@value以及属性注入的学习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Spring中@value以及属性注⼊的学习1、简单的Java配置
配置⽂件(jdbc.properties)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
ername=root
jdbc.password=123
编写⼀个配置类
1 @Configuration
2 @PropertySource("classpath:jdbc.properties")
3public class JdbcConfig {
4
5 @Value("${jdbc.url}")
6 String url;
7 @Value("${jdbc.driverClassName}")
8 String driverClassName;
9 @Value("${ername}")
10 String username;
11 @Value("${jdbc.password}")
12 String password;
13
14 @Bean
15public DataSource dataSource() {
16 DruidDataSource dataSource = new DruidDataSource();
17 dataSource.setUrl(url);
18 dataSource.setDriverClassName(driverClassName);
19 dataSource.setUsername(username);
20 dataSource.setPassword(password);
21return dataSource;
22 }
23 }
注解解读
@Configuration: 声明JdbcConfig是⼀个配置类
@PropertySource: 指定属性⽂件的路径
@value: 通过@value为属性注⼊值
@Bean: 通过dataSource()⽅法声明为⼀个注册Bean的⽅法,Spring会⾃动调⽤该⽅法,该⽅法的返回值会加⼊到Spring的容器中
然后就可以在任何位置注⼊DataSource
当配置上属性后便可以注⼊任何类使⽤了
1 @RestController
2public class HelloController {
3
4 @Autowired
5private DataSource dataSource;
6 @Autowired
7private JdbcConfig jdbcConfig;
8
9 @GetMapping("hello")
10public String hello() {
11 System.out.println(jdbcConfig.getDriverClassName()+"=="+jdbcConfig.getUrl());
12return "hello, spring boot!" + dataSource;
13 }
14
15 }
打印结果
2、改造原有缺陷,SpringBoot推荐的⽅式
以上⽅法的注⼊⽅式,虽然属性数据注⼊进去了,但是不够强⼤,因为他只能注⼊基本数据类型。
在SpringBoot中,提供了⼀种新的属性注⼊⽅式,⽀持各种java基本数据类型及复杂数据类型
接下来我们重新创建⼀个类,⽤来属性注⼊
1 @Data
2 @ConfigurationProperties(prefix = "jdbc")
3public class SpringBootProperty {
4private String url;
5private String driverClassName;
6private String username;
7private 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)
3public class HelloController {
4
5 @Autowired
6private SpringBootProperty springBootProperty;
7 @Autowired
8private DataSource dataSource;
9 @Autowired
10private JdbcConfig jdbcConfig;
11
12 @GetMapping("hello")
13public String hello() {
14 System.out.println("SpringBoot推荐的属性注⼊⽅式: " + springBootProperty.getDriverClassName() + "==" + springBootProperty.getUrl()); 15return "hello, spring boot!";
16 }
17 }
启动类
1 @SpringBootApplication
2public class App {
3public static void main(String[] args) {
4 SpringApplication.run(App.class);
5
6 }
7 }
End......。