我刚接触Spring,正在处理需要从数据库获取数据的项目。我正在使用tomcat服务器和使用JNDI DB连接池。以下是我的代码和Spring配置。由于jdbcTemplate
为null
而导致NullPointerException
。
public class AppConfig
{
@Autowired
private JdbcTemplate jdbcTemplate;
private static AppConfig config=null;
private HashMap<String, String> dbAppParameterValuesCacheMap;
public AppConfig()
{
cacheConfig();
}
public boolean cacheConfig()
{
dbAppParameterValuesCacheMap = null;
List<Map<String, Object>> appConfigMapList=null;
String parameterType="PP_APP_CONFIG";
try
{
appConfigMapList= jdbcTemplate
.queryForList("SELECT Parameter_Value, Parameter_Name FROM PP_Application_Parameter where PARAMETER_TYPE='"+parameterType+"'");
}
catch(NullPointerException ex)
{
System.out.println("here");
ex.printStackTrace();
}
if (dbAppParameterValuesCacheMap == null)
dbAppParameterValuesCacheMap = new HashMap<String,String>();
for(Map<String, Object> configMap:appConfigMapList)
{
dbAppParameterValuesCacheMap.put((String)configMap.get("Parameter_Name"), (String)configMap.get("Parameter_Value"));
}
return true;
}
}
我的Spring配置文件包含:
<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/PP_DATASOURCE" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" lazy-init="false">
<property name="dataSource" ref="dbDataSource"></property>
</bean>
<bean id="config" class="AppConfig" scope="singleton">
</bean>
JNDI已成功创建。当尝试执行该行时,我遇到了NullPointerException
。
appConfigMapList= jdbcTemplate
.queryForList("SELECT Parameter_Value, Parameter_Name FROM PP_Application_Parameter where PARAMETER_TYPE='"+parameterType+"'");