springboot如何代替spring中的applicationContext的配置文件
springboot中用类来代替spring的配置文件。创建对象注入依赖都是通过配置类来处理的。
配置类就是springboot中的配置文件。在该配置类上加上@Configuration注解。将bean交给spring
管理,在方法上加上@Bean注解。方法的返回值就是spring中配制文件中bean的class
在方法中手动创建出对象
@Configuration
public class JdbcConfig {
@Bean
public DruidDataSource getDataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
}
spingboot中属性注入(将数据文件(properteis或yml)中的数据读取到类中)
spring容器默认读取名为application.properteis文件
方式一:通过@PropertySource、与@Value相结合。spring方式
@Configuration
@PropertySource("classpath:db.properties")
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.password}")
private String password;
@Bean
public DruidDataSource getDataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driver);
druidDataSource.setUsername(username);
druidDataSource.setUrl(url);
druidDataSource.setPassword(password);
return druidDataSource;
}
}
方式二:设置一个数据封装类来读取属性(适用于很多地方需要的数据文件中的数据)
1、@ConfigurationProperties 写在封装数据类上
2、@Data(默认提供get、set方法,导入Lombok依赖)
3、@EnableConfigurationProperties(使用封装数据类)
三个注解来配合使用
被@ConfigurationProperties标记的类就像是spring配置文件中的读取properties文件的标签
会通过@Data标签,将配置文件的value赋值给属性。@EnableConfigurationProperties
类似于bean中的ref使用对应的properties。
/*封装数据类*/
@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties {
private String driver;
private String username;
private String url;
private String password;
}
/*配置类(配置文件)对应的bean需要引入数据,容器自动将数据封装类注入到对应的bean中*/
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DruidDataSource getDataSource(JdbcProperties jdbcProperties){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(jdbcProperties.getDriver());
druidDataSource.setUsername(jdbcProperties.getUsername());
druidDataSource.setUrl(jdbcProperties.getUrl());
druidDataSource.setPassword(jdbcProperties.getPassword());
return druidDataSource;
}
}
/*jar坐标*/
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
方式三:直接将@ConfigurationProperties表记在配置类中的bean方法上
此方法适合用于只读取一次或少次配置文件中的数据
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DruidDataSource getDataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
}
spring容器扫描到该配置类之后。法发对应的bean上存在 @ConfigurationProperties(prefix = "jdbc")
会根据bean返回对象类型,找到对应的setKey()方法,对对象进行初始化操作。