天空很美,但总有遗憾。人生很长,请不要让自己后悔。越努力的人越幸运。是不是还是为了java中的问题而烦恼?来看看我的这篇文章吧!
搞笑而又有实力的我,在欢快当中把知识传授与你。这难道不是一件很快乐的事情吗?
正如标题所言,在工具类中咱们如何拿到配置文件中的application.xml文件的内容呢?
跟着小铁的思路来慢慢解决这个问题,看看小铁是如何解决工作当中遇到的困难的!
一、首先咱们要先了解spirngboot中的启动机制
springboot当中有一个很重要的注解 @SpringbootApplication 它是一个组合注解:分别由
这几个注解组成(偷个懒,单词太多了。真的不想写了,希望同学们原谅呀!)
别看这么多的注解,但咱们只要了解其中的这三个就可以@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan
我来简单的说一下这三个注解分别是什么意思,阅读这篇文章的小伙伴,也回忆一下。
1、@SpringBootConfiguration:它是对原注解@Configuration 简单的封装。
2、@EnableAutoConfiguration:它主要提供springboot的自动装配,它是这所有注解当中最重要的注解,也是核心的注解。它给springboot提供了自动依赖功能,是springboot方便的最大的功臣。
3、@ComponentScan:它的主要作用是来开启组件扫描,可以自动扫描指定包路径下的@Component注解类并将bean实例注册到context中。
好了,现在理解完springboot的原理了,现在来解决一下咱们如何从工具类中拿到xml文件里面的内容吧
首先咱们要知道,咱们spring boot启动的话,工具类是不会被springboot加入到启动项里面的。而xml文件是会被加载进去的。所以咱们要在咱们工具类上面加上@Compoent注解来把工具类注入到springboot里面去。
重要的一点:都说@Value()能够获取到,是因为你启动的是整个项目,而工具类不加上@Component是不会被springboot管理的。所有@Vauel()注解也就不生效了。(这是一个坑,大坑。千万别踩了!)
但是有的小伙伴就会问了,我在工具类中添加了@Component注解,依然是获取不到,是什么原因?
答:不知道,小铁也不是万能的,哈哈哈~~~ 划水。有大神的小伙伴可以告诉我一下。我回来补充上。
不过也不是没有办法解决
下面就是小铁获取的方法:(工具类上面一定要加@Component,否则不会被springboot管理的)
private static String PROPERTY_NAME = "application-dev.yml";
public static Object getCommonYml(Object key){
Resource resource = new ClassPathResource(PROPERTY_NAME);
Properties properties = null;
try {
YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
yamlFactory.setResources(resource);
properties = yamlFactory.getObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return properties.get(key);
}
输出的话:
我的xml的格式:
我就这样子就能拿到了xml文件里面的内容。
代码中的坑小铁来踩,免费的关注和点赞给一个吧!
这篇文章没有什么太多的干活和技术含量,写这篇文章的原因就是想把这个坑分享给更多的小伙伴。(也给自己做个记录)尽量来避免这个大坑。我整整掉进去1个小时才解决。(都快哭了~~ 委屈)。
好了,这篇文章也就算是写完了。有兴趣的小伙伴可以去看看我的其他的文章。(也是很不错的呢!)
我是小铁,一个逗比与实力的结合体。----------------- 小铁