idea yml文件不变成树叶_springboot获取配置文件的三种方式

hello,大家好,有今天没有写文章了,因为呢,最近,公司有点事情,需要我呢,搭建一个demo,框架呢是springboot+Active实现消息的延时发送和定时发送功能,为了项目以后中使用到,所以呢,看springboot+ActiveMq 能不能实现这个场景,接下来呢,我说一下我搭好框架之后,遇到的一个问题吧。

如何获取application.yml文件数据,或者application.properties文件值

我的是application.yml

activemq:

brokerUrl: tcp://127.0.0.1:61616

user: admin

password: admin

#in-memory: true #是否启用内存模式(也就是不安装MQ,项目启动时同时也启动一个MQ实例)

# 等待消息发送响应的时间。设置为0等待永远。 send-timeout

timeout: 0

# 队列名称

queueName: springbootActiveMqTest

topicName: publishTopic

# 是否在回滚回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。

non-blocking-redelivery: false

pool:

enabled: true

max-connections: 10

第一种方式:

1.定义一个实体类,然后扫描到

@Component

@ConfigurationProperties(prefix = "activemq")

public class MyProps {

//用户名

private String user;

//密码

private String password;

//链接地址

private String brokerUrl;

// 超时时间

private String timeout;

// 队列名称

private String queueName;

然后实现set ,get 方法。

测试类:2

@RunWith(SpringRunner.class)

@SpringBootTest(classes = AdminApplication.class)

public class TestActiveMq {

//第一种方式获取

@Autowired

private MyProps myProps;

//第二种方式获取

@Value("${user.userName}")

private String userName;

@Test

public void test_send() {

logger.info("发送开始测试-------------------------------------------------------");

logger.info("用户名3------------------------------"+myProps.getUser());

}

}

@Test

public void test_send() {

logger.info("发送开始测试-------------------------------------------------------");

logger.info("用户名2------------------------------"+userName);

}

结果也没获取到,你们相信吗,这居然被我遇到了,因为这种几种方式获取呢,以前写过,也没出现过这种问题,我靠,脑袋有点懵了

于是第三种方式来了

YamlPropertiesFactoryBean yamlMapFactoryBean = new YamlPropertiesFactoryBean();

//可以加载多个yml文件

yamlMapFactoryBean.setResources(new ClassPathResource("application.yml"));

Properties properties = yamlMapFactoryBean.getObject();

userCommon.setUser(properties.getProperty("activemq.user"));

userCommon.setPassword(properties.getProperty("activemq.password"));

retrun userCommon;

我靠,居然获取到了,你说气人不,

// 测试类pom.xml 配置

junit

junit

4.12

// 扫描文件配置

org.springframework.boot

spring-boot-configuration-processor

true

// test 配置

org.springframework.boot

spring-boot-starter-test

test

还有更奇葩的是;

在测试类上面的这个扫描

@RunWith(SpringRunner.class)

@SpringBootTest(classes = AdminApplication.class)

死活没法引用,查了很多方法,虽然也有同志遇到过这个问题,但答案很多,idea 始终无法引用

换成eclipse 引入这个项目,然后,随便敲一下,就可以引入了,我靠,然后在idea 这边居然还是报红,我靠, 我没救了,

最后,写了个main 方法实现这个Active MQ 调用生产者发送消息吧,然后消费者也是这样的main 方法消费的,好吧,至少实现了这个 Active mq 消息延时发放和定时发送的功能了 ,

先这样吧,今天有点无语了,

特别是这个引入的问题,大家觉得,这个简单的问题,会是哪个细节出了问题呢。欢迎大家留言,讨论,谢谢。

250e72a9e5d34fd49703c2c2336ac8fe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值