@Value(value = "${lbs.routePlan.url}")
private String routePlanUrl;

@Value引入配置文件的属性失效,日志跟踪routePlanUrl所在类被spring加载了两次,第一次成功的读取到了配置文件中lbs.routePlan.url对应的值,第二次未能读取到配置文件中的值,而将${lbs.routePlan.url}赋值给routePlanUrl。

问题跟踪:

在web.xml中同时配置了ContextLoaderListener和DispatcherServlet,ContextLoaderListener解析了applicationContext.xml生成一个IOC,DispatcherServlet解析了spring-mvc.xml生成了一个IOC,applicationContext.xml中配置的扫描bean扫描了所有bean,同时spring-mvc.xml也扫描了所有的bean,所以导致加载了两次bean。 同时DispatcherServlet解析生成的上下文是ContextLoaderListener解析上下文的子类,tomcat优先从子上下文中取bean,然后再从父类中找bean。所以永远找到的是子上下文中bean。 spring-mvc.xml又没有配置属性置换文件,所以才读取不到配置文件中lbs.routePlan.url的值 。

参考文章: 1. https://www.jianshu.com/p/4386dffc998f spring的bean被加载了两次

2. https://blog.csdn.net/pange1991/article/details/81252644 Spring+SpringMVC重复加载配置而引起的bean被加载两次的问题

基于 Spring + SpringMVC +Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预 加载 ,无限滚动 加载 ,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统源码。响应式设计,支持手机、平板、PC,都有良好的视觉效果!包含了日常需要的所有功能。 基于 Spring + SpringMVC +Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预 加载 ,无限滚动 加载 ,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统源码。响应式设计,支持手机、平板、PC,都有良好的视觉效果!包含了日常需要的所有功能。 基于 Spring + SpringMVC +Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预 加载 ,无限滚动 加载 ,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统源码。响应式设计,支持手机、平板、PC,都有良好的视觉效果!包含了日常需要的所有功能。 基于 Spring + SpringMVC +Mybatis   在《 Spring Bea n 重复 执行 两次 (实例被构造 两次 问题 分析》一文中,我们知道web.xml两处 配置 文件正常需分开。如下所示: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="htt S spring bea n被初始化 加载 2次 spring 框架的web项目时,启动的时候发现某个 bea n被 加载 两次 ,比如使用SchedulingConfigurer或者使用@PostConstruct的方法都被 执行 了2次 web.xml 配置 <context-param> <param-name>contextConfigLocation</param-n... 简单做了一个定时器,发现它的构造方法被 执行 两次 ,且是不同的对象。 配置 如下所示: springMVC -servlet.xmlhttp://www. spring framework.org/schema/ bea ns/ spring - bea ns-4.1.xsdhttp://www. spring framework.org/schema/contexthttp://www. spring framework.org... 这里说一下我遇到的情况,有时候写项目的时候突然前面还好好的,突然写了一些代码之后,启动不起来了。然后分析之后发现有些 Bea n对象在Config 配置 中被 执行 两次 ,第一次有值,第二次莫名就读取不到值了,然后导致项目启动不起来。这里我就介绍一下我遇到该 问题 的一个解决方式,大家可以尝试一下,大家跟我情况类似,可以顺着我的思路去操作一下。在大家的项目里看一下是否引入了 Spring 的单元测试依赖 问题 Spring Boot框架项目,在写单元测试的时候,每一个测试类都要 加载 一次 Spring 上下文;因为每一个类都加了@ Spring BootTest,不加的话, 加载 不了 Spring ,所以必须加; 解决方法:@ Spring BootTest(classes={Application.class}),这里的Application.class是你项目的Application主类 前提:之前给自己的代码写单元测试习惯使用Mokito、MockMvc,这次是需要对自己写的grpc接口进行一个集成测试,由于刚接触grpc,所以我需要通过集成测试保证grpc的调用是顺利的。 在真实方法中,我需要使用RestTemplete 和 MongoTemplete等第三方依赖,对于MongoDB的存取需要进行mock,否则每一次测试都会操作Mongo,这是我不愿意看到的。 测试的调用关... 项目环境: springmvc , spring , hibernate 事情是这样的,项目在启动时需要启动一个线程, 执行 扫描任务,因为不是例行性任务,所以不考虑quartz,要完成这个功能,可以有多种实现方法,比如: 1. 自定义监听器 public class StartupListener implements ServletContextListener { publ... 出现@PostConstruct注解的方法 执行 两次 ,肯定是因为 配置 的原因,导致 Bea n被扫描了 两次 ,也就 执行 两次 构造方法, 执行 两次 @PostConstruct注解的方法 查看 配置 文件,Sp @PostConstruct属于JSR250规范,在 bea n创建完成并且属性赋值完成之后会 执行 该初始化方法。 内部通过InitDestroyAnnotation Bea nPostProcessor实现逻辑。 2、@PostConstruct 出 问题 写法说... public class MongoDevConfig { private final static Logger logger = LoggerFactory.getLogger(MongoDevConf... 号外!号外!号外!你的 spring boot integration tests 运行慢吗,是不是每跑一次测试,你都在等待,等待它全绿的那一瞬间。如果你遇到,那请接着往下看,也许可以帮助到你。如果你没有遇到,那也请往下看,因为也许以后你会遇到。 告诉你一个秘密:@Mock Bea n会导致测试类(Test Class)之间 spring bo...