A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 HelloD 于 2018-3-15 12:01 编辑

        关于<context:property-placeholder>的一个有趣现象(聚合工程)

        现在有两个模块A和B
        A的配置文件如下:
        

        B的配置文件如下:
        


        问题就来了,单独运行A或者B模块的时候都能正常启动,但是A、B集成之后运行的话,spring容器就启动不了;

        Could not resolve placeholder 'moduleb.jdbc.driverClassName' in string value "${moduleb.jdbc.driverClassName}"


         在spring中扫描配置文件的是一个PropertyPlaceholderConfigurer对象,他在spring容器中默认只有一个,也就是说在A容器中创建了一个之后,B容器再去创建对象的请求就会被spring直接忽略掉;因而造成无法正确进行属性替换的问题。


         解决方案:
                 一个项目或一个系统的配置应该放在一起。<context:property-placeholder  locations="classpath*:*.properties" />即可。





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马