@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两处
配置
文件正常需分开。如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<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...