@PropertySource
@PropertySource的作用:加载指定的配置文件
什么意思呢??? 下面,代码举例
我在reources中在创建一个person.yml,把之前的application.yml里面的内容删除
person.yml
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
回到Person类中,加入@PropertySource此注解,来指定你要加载的配置文件
@Component
@PropertySource("classpath:person.yml", encoding = "UTF-8")
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
...
...
}
运行一波,同样也像配置全局文件一样得到相同的效果,如何配置全局文件?? 看这里
????全为null
原来,@PropertySource此注解默认只对properties文件可以进行加载,但l不能支持yml或者yaml
所以,需创建person.properties
person.properties
person.lastName=李四
person.age=22
偷波懒。。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdo7up9k-1596175265290)(en-resource://database/592:1)]
OK, 毛有问题
@ImportResource
@ImportResource的作用:导入Spring的配置文件,让配置文件里面的内容生效,而且,Spring Boot里面没有Spring的配置文件,要想导入我们自己编写的配置文件,也得加上这个注解,并不像SSM那样直接@Autowired就可以直接导入配置文件
譬如,创建一个Hello类
public class Hello {
}
在创建一个bean.xml
bean.xml
<?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="hello" class="com.nsx.springboot7.pojo.Hello"/>
</beans>
如下我们测试容器中有没有这个bean
@SpringBootTest
class Springboot7ApplicationTests {
@Autowired
Person person;
@Autowired
ApplicationContext applicationContext;
@Test
void hasHello() {
Boolean b = applicationContext.containsBean("hello");
System.out.println(b);
}
}
输出一个false
我们再启动类上加入@ImportResource
@ImportResource(locations = "classpath:bean.xml")
@SpringBootApplication
public class Springboot7Application {
public static void main(String[] args) {
SpringApplication.run(Springboot7Application.class, args);
}
}
perfect !!!
但是,你不觉得这样子给容器中添加组件很麻烦吗,又要加@ImportResource,又要写 .xml 文件,如果配置多个组件,真的麻烦,那么引入新的注解@Bean
@Bean
SpringBoot推荐给容器中添加组件的方式是使用全注解的方式,具体操作如下:
- 配置类@Configuration------>Spring配置文件
- 使用@Bean给容器中添加组件
譬如,创建一个Myconfig全局配置类
@Configuration
public class Myconfig {
@Bean
public Hello hello() {
System.out.println("Hello类加载过来咯");
return new Hello();
}
}
什么意思呢??
@Configuration的作用:指明当前类是一个配置类,就是来替代之前的Spring配置文件
@Bean的作用:将方法的返回值(即Hello)添加到容器中,容器中这个组件默认的id就是方法名(即hello)
然后,我们测试一波,但测试之前得把之前配置的@ImportResource和bean.xml删掉
ok,木有问题
项目最终的创建