从零开始的Spring Boot学习【七】【@PropertySource和@ImportResource】

我们本章来讲一下这两个注解:

@PropertySource
@ImportResource

@PropertySource:

在Spring Boot中,默认是会加载application.properties和application.yml文件中的数据。但是如果我们放实体类中的属性值,不想写到这个全局的配置文件中,我们要怎么办?这个时候@PropertySource这个注解就发挥作用了,我们可以自己指定哪个文件作为我们的配置文件

实体类:

文件路径:

如果大家还不清楚classpath是什么意思,我在这里介绍一下:

在网上有很多人说classpath是指WEB-INF/classes,一开始我也以为是,因为在运行的过程中,这些java和资源文件都会被编译转变为class文件和相应格式的文件,都会放到一个统一的文件夹中,而这个PropertySource就是把这个路径赋予,让系统知道想要找的文件在那个目录(在运行程序后,它并不是直接运行的java文件,而是要经过编译,编译后的文件会放到其他地方,所以不会直接在项目原来路径中搜寻相应的文件,这个大家要知道)。

但是后面我我发现在这个目录并没有相关的class文件信息,经过各种查询才了解了,在我们的项目中,有一个.classpath文件

我们打开它看一下。(博主用的是NotePad++打开的)

在classpathentry里有一个输出位置output="target/classes",我们找一下,果然在项目中有这么一个target文件夹。

我们点进去。

会发现有相关的classes和test-classes文件夹,分别存放了相应的class文件,我们打开classes文件夹来看看里面的内容。

果然,java文件和相应资源目录中的文件都存放在此处。

这个才是真正的classpath的路径位置。

好的,回到主题,我们设置好了路径,我们运行一下程序。

正是我们在config.properties中赋予的属性值。这就说明了@PropertySource起作用了,可以自主的指定配置文件,但是@PropertySource只能指定.properties文件不能指定.yml文件,有兴趣的童鞋可以自行去尝试一下。

@ImportResource:

我们说过Spring Boot是自动装配的。也就是说Spring等配置文件,会默认给Spring Boot自动配置好。那么如果我们想要自己编写Spring等配置文件,Spring Boot会识别吗?

我们来写一个Spring的配置文件试试吧:

在资源目录中,我们右键new,Other,然后输入bean,找到如上图所示的位置,我这里取名为spring.xml。

然后创建package和相应的java文件,如上图所示。

我们在spring.xml文件中填入如下信息,就像我们之前配置一样。(不用Spring Boot前)

好的,我们配置好了,我们现在来测试下,能不能从Spring容器中拿到这个bean,如果拿到了就说明可以识别。

在测试类中,我们添加ApplicationContext,这个Spring的上下文对象。然后重新写一个测试方法,从context中拿我们放进去的bean,然后打印这个对象。(我们StudentService类中不需要写任何东西,但是对象也会打印相应的值)

我们看看相应的测试结果,果然是报错了,没有这个名字叫做studentService的bean,所以Spring Boot默认不会识别。那么怎么让它识别呢?答案是使用@ImportResource。在哪里使用呢?答案是Spring Boot的主程序啦。

好的,我们现在添加好了,再次运行看看结果。

绿啦绿啦!

相关的对象值也打印出来啦!

手写Spring配置文件有两种方式,一种是通过xml配置文件,我们刚刚试过了;另一种是通过注解的方式配置。

我们推荐采用注解的方式,而不推荐使用xml文件进行配置。Spring的官网也是推荐注解方式哩。

那么怎么使用注解的方式进行配置呢?下章告诉你。

关注博主,更多精彩哦!

上一章:从零开始的Spring Boot学习【六】【通过@Value方式注入】

下一章:【努力编写中...】

发布了29 篇原创文章 · 获赞 29 · 访问量 8581

猜你喜欢

转载自blog.csdn.net/KnightHONG/article/details/104223792