版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whm18322394724/article/details/83625302
*发现问题 |
1、直接启动500
2、关键代码行打断点
刚开始小菜只是发现代码移植过来直接启动报500,日志就提示几行异常代码也知道是空指针,为了准确定位错误,于是乎就惯性的把断点打在了接口中的关键代码行上(如:service、返回值、捕捉异常),开始调试发现就走了一个断点,然后就卡住了,页面也没反应,也不提示错误信息,更别说进service了。调试关键代码行失败。
3、每行代码打断点
不服气的我把接口里的每行代码都打了断点又试了几次,终于有了新发现:断点走到实例化A实体时就卡着不动了,可是还是没有错误信息。
4、提示错误信息
有了新发现哪能就此放弃,再次尝试突然报了日志信息,提示基类实体中第18行有错。小菜顺着日志信息点进去发现基类实体中的属性报空指针了,然后就全文检索此属性的值所在地,发现属性的值是个常量写在了配置文件中,此时才开始顺应着“获取不到配置文件中的全局变量”来解决问题,如何解决的请看下文。
*解决问题 |
因为基类实体是公用的,不能说改就改,只能先最大程度上解决基类实体获取不到值的问题,否则其他接口中实例化子类实体都有问题,所以就检查了一下web.xml、spring-context.xml等文件中是否使用classpath加载了此配置文件。
此方法无效,还是获取不到值。
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:inter.properties</value>
</list>
</property>
</bean>
2、使用@Value注解直接获取配置文件中的值
加载配置文件解决不了问题,于是我们就尝试了写死值和使用spring注解,最后选择了后者,在set方法上使用了@Value注解
//在实体的set方法上方使用:@Value("${要获取的全局变量}")
@Value("${PLATFORMMJ}")
public void setPlatform_type(Integer platform_type) {
this.platform_type = platform_type;
}
//在service直接获取配置文件中的全局变量:@Value("${要获取的全局变量}")
@Value("${Active}")
private String icUrl;