@PropertySource注解 和 @ImportSource注解 与@ Configuration注解 和 @Bean注解 及 SpringBoot的配置文件讲解
I.@PropertySource注解:
用来指定加载的配置文件,比如我们经常用@ConfigurationProperties注解来告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定以达到给属性赋值的目的,但是,@ConfigurationProperties这个注解它默认是从全局配置文件application.properties中去获取值的,这样一来当全局配置文件application.properties中配置的内容很多时,就很不方便,所以强烈推荐可以为本类中的所有属性新建一个配置文件(非全局配置文件application.properties),然后用@PropertySource注解来指定该配置文件,以达到为该类中所有属性赋值的目的。
eg:@PropertySource (value = {"classpath:person.properties"})
public class Person{
.......
II.@ImportSource注解:
用来导入spring的配置文件,让配置文件里面的内容生效。因为SpringBoot里面没有Spring的配置文件,所以我们自己编写的配置文件,也不能自动识别,想让Spring的配置文件生效加载进来,就用@ImportResource标注在一个配置类上。
eg: @ImportResource ( locations = {"classpath : beans.xml"} )
......
==========================================================================================
||^_^|||& 事实上SpringBoot更加推荐我们使用全注解的方式给容器添加组件。
即:将配置类作为Spring的配置文件(使用@Bean注解给容器中添加组件)
I. @Configuration注解:指明当前类是一个配置类,就是来替代之前的Spring配置文件(之前在配置文件中用<bean><bean/>标签来添加组件)。
II.@Bean注解:Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。Spring只会调用一次,将这个Bean对象放在自己的IOC容器中。通俗的讲就是在服务启动时,实例化一个对象放到ioc容器中,在需要初始化的实例,方法,内容时使用。作用:将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名,@Bean注解对应bean标签,@Value注解对应value属性,他们都有内在联系的,懂的都懂。
eg:一个小例子使用@Bean给容器中加组件。
1.config配置类:
@Configuration
public class MyAppConfig { //用来替代Spring配置文件
//要做的:将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
@Bean //@Bean注解对应bean标签,@Value注解对应value属性,他们都有内在联系的,懂的都懂。
public HelloService helloService(){ //把HelloService添加到容器中,容器中这个组件的名字就是helloService。
System.out.println("配置类@Bean给容器中添加组件了...");
return new HelloService(); //返回这个HelloService
}
}
2.service组件:
public class HelloService {
}
3.SpringBoot测试类:
@SpringBootTest
class Springboot02ConfigApplicationTests {
@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(b);
}
}
结果:
配置类@Bean给容器中添加组件了...
true
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示