@Propertysource 、@ImportResource和@bean 区别
- 2020 年 3 月 18 日
- 筆記
@CongigurationProperties与@Propertysource结合读取指定配置文件(只能用于properties文件)
@PropertySource(value = {"classpath:person.properties"}) @Component @ConfigurationProperties(prefix = "person") @Validated // 添加JSR-303 javax.validation约束注解 public class Person { // @Value("${person.last-name}") // 从配置文件获取 @Email // lastName必须是邮箱格式 private String lastName; @Value("#{11*2}") // 直接计算 spEL表达式 private Integer age; @Value("true") // 字面量 private Boolean boss; private Date birth; private Map<String, Object> maps; private List<Object> lists; private Dog dog; }
@ImportResource 导入Spring的配置文件,让配置文件里面的内容生效 SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;通过将@ImportResource标注在一个配置类上,让Spring的配置文件生效
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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.sangyu.springboot.service.HelloService"></bean> </beans>
/** * Spring 单元测试 * 可以在测试期间很方便类似编码一样进行自动注入容器等 */ @RunWith(SpringRunner.class) @SpringBootTest public class MySpringBoot01ApplicationTests { @Autowired Person person; @Autowired ApplicationContext ioc; @Test public void contextLoads() { System.out.println(person); } @Test public void testHelloService(){ boolean b = ioc.containsBean("helloService"); System.out.println("===="); System.out.println(b); } }
@ImportResource(locations = {"classpath:beans.xml"}) @SpringBootApplication class MySpringBoot01Application { public static void main(String[] args) { SpringApplication.run(MySpringBoot01Application.class, args); } }
public class HelloService { }