赞
踩
springboot的属性注入
以注入dataSource为例
1.springboot默认读取的文件是放在resources目录下的名为application.properties或application.yml的文件
在application.properties中写入以下属性
- jdbc.driverClassName=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://127.0.0.1:3306/数据库名称
- jdbc.username=rootxxx
- jdbc.password=xxx
或者application.yml中写入如下格式的属性
- jdbc:
- driverClassName: com.mysql.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/数据库名称
- username: rootxxx
- password: xxx
2.引入依赖
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.1.6</version>
- </dependency>
3.创建一个类,用于提供属性注入
- @ConfigurationProperties(prefix = "jdbc")
- public class JdbcProperties {
- private String url;
- private String driverClassName;
- private String username;
- private String password;
- // ... 略
- // getters 和 setters
- }
- 在类上通过@ConfigurationProperties注解声明当前类为属性读取类
- prefix="jdbc"读取属性文件中,前缀为jdbc的值。
- 在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致
4.创建一个JdbcConfig类使用这些属性
- @Configuration
- @EnableConfigurationProperties(JdbcProperties.class)
- public class JdbcConfig {
- //例子
- @Bean
- public DataSource dataSource(JdbcProperties jdbc) {
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setUrl(jdbc.getUrl());
- dataSource.setDriverClassName(jdbc.getDriverClassName());
- dataSource.setUsername(jdbc.getUsername());
- dataSource.setPassword(jdbc.getPassword());
- return dataSource;
- }
- }
通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象
当然,JdbcProperties的注入有三种方法
4.1@Autowired注入
- @Autowired
- private JdbcProperties prop;
4.2构造函数注入
- private JdbcProperties prop;
- public JdbcConfig(Jdbcproperties prop){
- this.prop = prop;
- }
4.3声明有@Bean的方法参数注入
上面的例子就是使用该方法注入(//例子)
4.4这种方式的注入看起来很复杂,但是复用性很高,如果我们只需要在单个地方使用dataSource,可以使用下面的方法注入
- @Configuration
- public class JdbcConfig {
-
- @Bean
- // 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
- @ConfigurationProperties(prefix = "jdbc")
- public DataSource dataSource() {
- DruidDataSource dataSource = new DruidDataSource();
- return dataSource;
- }
- }
我们直接把@ConfigurationProperties(prefix = "jdbc")声明在需要使用的@Bean的方法上,然后SpringBoot就会自动调用这个Bean(此处是DataSource)的set方法,
然后完成注入。使用的前提是:该类必须有对应属性的set方法!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。