Spring Boot小记(3)

@PropertySource、@ImportResource和@Bean

作者 Wavy Peng 日期 2018-05-04
Spring Boot小记(3)

@PropertySource

@PropertySource:加载指定的配置文件

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉Spring Boot将本类中的所有属性和配置文件中相关的配置进行绑定
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
* 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
*
* @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值
*/
@PropertySource("classpath:person.properties")
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

private String lastName;
private Integer age;
private Boolean boss;
......
}

ImportResource

@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效

Spring Boot里面没有Spring的配置文件,用户自定义的配置文件,不能自动识别

想让Spring的配置文件生效,加载进来,需要将@ImportResource标注在配置类上

@ImportResource(locations = {"classpath:beans.xml"})
导入Spring的配置文件让其生效

Spring中配置文件的方式(不推荐)

<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd>

<bean id="helloService" class="com.atguigu.springboot.service.HelloService"></bean>

</beans>

Spring Boot推荐给容器中添加组件的方式:

1、配置类:类似Spring配置文件,采用全注解的方式

2、使用@Bean给容器中添加组件

/**
* @Configuration:指明当前类是一个配置类,就是用来替代之前的Spring配置
*
* 在配置文件中用<bean></bean>标签添加组件
*/
@Configuration
public class MyAppConfig {

//将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService(){
System.out.println("配置类@Bean给容器中添加组件了");
return new HelloService();
}
}