- `@Configuration`:声明一个类作为配置类,代替xml文件
- `@Bean`:声明在方法上,将方法的返回值加入Bean容器,代替`<bean>`标签
- `@value`:属性注入,只能注入基本类型
- `@PropertySource`:指定外部属性文件,
@AutoWired 注入
构造函数注入
3.4、更优雅的注入
@ConfigurationProperties(prefix = "jdbc")
事实上,如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类(JdbcProperties)中。而是直接在需要的地方声明即可:
@Configuration
public class JdbcConfig {
@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
@PropertySource("classpath:jdbc.properties")
加载自己写的 properties属性.
@Configuration
@PropertySource("classpath: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.setUrl(url);
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
@ConfigurationProperties(prefix = "jdbc")
配置类 yaml
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String url; //这里读取 application.yam 里的jdbc.url
private String driverClassName;
private String username;
private String password;
// ... 略
// getters 和 setters
}
@EnableConfigurationProperties(JdbcProperties.class)
加载配置类
@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;
}
}
评论区