Spring Boot的属性注入的三种方式

Spring Boot的属性注入:

以数据源的属性注入为例

(1)@Value注入

准备工作:首先引入依赖
<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>1.1.6</version>
</dependency
创建jdbc.Properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///hibernate
jdbc.username=root
jdbc.password=123456

然后创建一个JdbcConfig,

@Configuration
//打了这个注解,相当于JdbcConfig就是一个xml文件了,需要自己手动返回一个Bean,使用时,会从spring容器中获取。
@PropertySource("classpath:jdbc.properties")
//读取外部的jdbc.properties文件
public class JdbcConfig {
	@Value("${jdbc.url}")
	String url;
	@Value("${jdbc.driverClassName}")
	String driverClassName;
	@Value("${jdbc.username}")
	String username;
	@Value("${jdbc.password}")
	String password;
	@Bean
	public DataSource dataSource() {
		DruidDataSource datasource = new DruidDataSource();
		datasource.setDriverClassName(driverClassName);
		datasource.setUrl(url);
		datasource.setUsername(username);
		datasource.setPassword(password);
		return datasource;
	}
}
写一个接口,声明一个DataSource类型的datasource,自动注入
@RestController
public class HelloController {
	@Autowired
	private DataSource datasource;
	@GetMapping("hello")
	public String hello() {
		return "hello,springboot";
	}
}
打个断点,调试一下 可以看到dataSource的属性有值了

Spring Boot的属性注入的三种方式_第1张图片
(2)使用set方法注入
创建一个application.properties文件,把jdbc.properties中的内容复制

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///hibernate
jdbc.username=root
jdbc.password=123456
新建一个JdbcProperties,@Data注解,使用set方法注入数据源属性

@ConfigurationProperties(prefix = "jdbc")
@Data
//@Component
/**
*jdbcProperties使用@Component,JdbcConfig就不用加@EnableConfigurationProperties(JdbcProperties.class);反之,JdbcConfig不使用,就加。
*/
public class JdbcProperties {
	String url;
	String driverClassName;
	String username;
	String password;
}
JdbcConfig中直接注入JdbcProperties文件,使用jdbc.属性 来给数据源赋值
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {

	@Bean
	public DataSource dataSource(JdbcProperties jdbc) {
		DruidDataSource datasource = new DruidDataSource();
		datasource.setDriverClassName(jdbc.driverClassName);
		datasource.setUrl(jdbc.url);
		datasource.setUsername(jdbc.username);
		datasource.setPassword(jdbc.password);
		return datasource;
	}
}
也可以,不用新建jdbcProperties文件,直接修改jdbcConfig,这样就可以直接自动注入到数据源中。不用再通过一个中间文件注入,简化了操作
	@ConfigurationProperties(prefix ="jdbc")
	@Bean
	public DataSource dataSource() {
		DruidDataSource datasource = new DruidDataSource();
		return datasource;
	}

你可能感兴趣的:(架构)