前言
SpringBoot 属性注入
提示:以下是本篇文章正文内容,下面案例可供参考
一、注入方式
第一种:@Autowired注入
@Autowired
private JdbcProperties prop;
第二种:构造函数注入
private JdbcProperties prop;
public JdbcConfig(Jdbcproperties prop){
this.prop = prop;
}
第三种:@Bean的方法参数注入
@Bean
public Datasource dataSource(JdbcProperties prop){
// ...
}
第四种:直接在@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")
Springboot会自动调用这个Bean(使用的前提是:该类必须有对应属性的set方法!JdbcProperties.class)
@Configuration
public class JdbcConfig {
@Bean
// 声明要注入的属性前缀,Spring Boot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
}
Spring Boot推荐第三种注入方式
二、(第一种)@Autowired注入
0.创建application.properties
代码如下(示例):
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/springboot
jdbc.username=root
jdbc.password=root
1.创建JdbcProperties
代码如下(示例):
/**
* 属性读取类
* prefix: 为application.properties文件中的前缀
*/
@Data
@ConfigurationProperties(prefix = "jdbc") //读取配置文件,声明一个类是读取配置类
public class JdbcProperties {
private String driverClassName; //配置文件中的属性名称
private String url;
private String username;
private String password;
}
2.创建JdbcConfiguration
代码如下(示例):
/**
* Autowired注入方式
* SpringBoot的第三种属性注入方式——通过@Autowired注解注入 (最常用的方式)
*/
@Configuration //声明一个类为Java配置类,相当于一个xml文件 【测试时 打开】
@EnableConfigurationProperties(JdbcProperties.class) //启用属性读取类
public class JdbcConfiguration {
@Autowired
private JdbcProperties jdbcProperties; //注入读取类
@Bean //把方法的返回值注入到spring容器,然后在任何地方都可以使用了
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;
}
}
3.创建JdbcAutowController
代码如下(示例):
/**
* @Autowired 注入方式
*/
@RestController
@RequestMapping("autow")
public class JdbcAutowController {
@Autowired
private DataSource dataSource;
/**
*
* 打上断点,测试查看dataSource。
* @return
* @throws SQLException
*/
@GetMapping("/info")
public String info() throws SQLException {
System.out.println("dataSource = " + dataSource);
return "请求成功!";
}
}
断点,测试查看dataSource
三、(第二种)构造函数注入
0.创建目录
代码如下(示例):
1.创建JdbcProperties
代码如下(示例):
/**
* 属性读取类
* prefix: 为application.properties文件中的前缀
*/
@Data
@ConfigurationProperties(prefix = "jdbc") //读取配置文件,声明一个类是读取配置类
public class JdbcProperties {
private String driverClassName; //配置文件中的属性名称
private String url;
private String username;
private String password;
}
2.创建JdbcStrucConfiguration
代码如下(示例):
/**
* 构造函数注入
* SpringBoot的第二种属性注入方式——通过构造方法注入
*/
@Configuration //声明一个类为Java配置类,相当于一个xml文件
@EnableConfigurationProperties(JdbcProperties.class) //启用属性读取类
public class JdbcStrucConfiguration {
private JdbcProperties jdbcProperties;
//构造函数注入
public JdbcStrucConfiguration(JdbcProperties jdbcProperties){
this.jdbcProperties = jdbcProperties;
}
@Bean //把方法返回值注入到spring容器
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;
}
}
3.创建JdbcStrucController
代码如下(示例):
/**
* 构造函数注入
* SpringBoot的第二种属性注入方式——通过构造方法注入
*/
@RestController
@RequestMapping("struc")
public class JdbcStrucController {
@Autowired
private DataSource dataSource;
/**
*
* 打上断点,用引导类启动项目,测试查看dataSource。
* @return
* @throws SQLException
*/
@GetMapping("/info")
public String info() throws SQLException {
System.out.println("dataSource = " + dataSource);
return "请求成功!";
}
}
四、(第三种)@Bean的方法参数注入
0.创建目录
代码如下(示例):
1.创建JdbcProperties
代码如下(示例):
/**
* 属性读取类
* prefix: 为application.properties文件中的前缀
*/
@Data
@ConfigurationProperties(prefix = "jdbc") //读取配置文件,声明一个类是读取配置类
public class JdbcProperties {
private String driverClassName; //配置文件中的属性名称
private String url;
private String username;
private String password;
}
2.创建JdbcBeanConfiguration
代码如下(示例):
/**
* @Bean方法的参数注入
* SpringBoot的第三种属性注入方式——通过Bean方法的形参注入
*/
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcBeanConfiguration {
@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;
}
}
3.创建JdbcBeanController
代码如下(示例):
/**
* @Bean 注入方式
*/
@RestController
@RequestMapping("bean")
public class JdbcBeanController {
@Autowired
private DataSource dataSource;
/**
*
* 打上断点,用引导类启动项目,测试查看dataSource。
* @return
* @throws SQLException
*/
@GetMapping("/info")
public String info() throws SQLException {
System.out.println("dataSource = " + dataSource);
return "请求成功!";
}
}
五、(第四种)@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")
0.创建目录
代码如下(示例):
1.创建JdbcProperties
代码如下(示例):
/**
* 属性读取类
* prefix: 为application.properties文件中的前缀
*/
@Data
public class JdbcProperties {
private String driverClassName; //配置文件中的属性名称
private String url;
private String username;
private String password;
}
2.创建JdbcBeanConProConfiguration
代码如下(示例):
/**
*
* SpringBoot的第四种属性注入方式——直接在@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")
*
* @EnableConfigurationProperties(JdbcProperties.class)可以直接作用在需要使用@Bean的方法上,
* Springboot会自动调用这个Bean(使用的前提是:该类必须有对应属性的set方法!JdbcProperties.class)
*
*/
@Configuration //声明一个类为Java配置类,相当于一个xml文件 【测试时 打开】
public class JdbcBeanConProConfiguration {
@Bean //把方法的返回值注入到spring容器,然后在任何地方都可以使用了
@ConfigurationProperties(prefix = "jdbc") //读取配置文件,声明一个类是读取配置类
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
2.创建JdbcBeanConaProController
代码如下(示例):
/**
* 直接在@Bean方式上使用@ConfigurationProperties(prefix = "jdbc")
*/
@RestController
@RequestMapping("beanConaPro")
public class JdbcBeanConaProController {
@Autowired
private DataSource dataSource;
/**
*
* 打上断点,用引导类启动项目,测试查看dataSource。
* @return
* @throws SQLException
*/
@GetMapping("/info")
public String info() throws SQLException {
System.out.println("dataSource = " + dataSource);
return "请求成功!";
}
}
总结
以上就是要讲的内容,SpringBoot的属性注入方式.