【发布时间】:2015-06-30 23:39:26
【问题描述】:
我正在尝试解决一个非常简单的解决方案:
我有我的 DAO 对象:
package com.me.dao;
@Service
public class JavaNeo4jConnection implements Neo4jConnection {
private JdbcTemplate jdbcTemplate;
@Autowired(required = true)
private DriverManagerDataSource dataSource;
public void setDataSource(DriverManagerDataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplate = new JdbcTemplate(this.dataSource);
}
}
我已经在 springConfig.xml 中声明了数据源
<context:annotation-config />
<context:component-scan base-package="com.me.dao" />
<context:component-scan base-package="com.me.servlets" />
<!-- Servlet -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- dataSource bean-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.neo4j.jdbc.Driver" />
<property name="url" value="${neo4j.dburl}" />
<property name="username" value="${neo4j.username}" />
<property name="password" value="${neo4j.password}" />
</bean>
<!-- Config properties file-->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
正在使用我的 servlet 控制器中的自动装配来实例化 dao 对象:
package com.me.servlets;
@Controller
public class JsonServer {
@Autowired
Neo4jConnection neoConn;
@RequestMapping("/servejson")
@ResponseBody
public void serveJson(HttpServletRequest request, HttpServletResponse response
) throws IOException {
OutputStream os = response.getOutputStream();
String json = neoConn.getInfo(request.getParameter("query"));
os.write(json.getBytes());
os.close();
os.flush();
}
}
但是数据源永远不会被实例化,运行我的代码会产生一个NullPointerException。
我在这里缺少什么?我很确定我在滥用@Autowired。
【问题讨论】:
-
你从哪里得到
NullPointerException?你在哪里以及如何使用JavaNeo4jConnectionbean? -
您是否对包含
JavaNeo4jConnection类的包进行组件扫描?JavaNeo4jConnection必须是 bean 才能使其字段自动装配。发布整个配置文件。 -
您可能会在 jdbcTemplate 上获得 npe,如果是这样,请尝试将 autowire 注释放在 setter 上
-
需要看看你是如何使用
JavaNeo4jConnection类的。 -
@SotiriosDelimanolis 将@Autowired 注释添加到方法中修复了它。您能否将其发布为答案并解释
@Autowired在应用于方法和属性方面的工作原理?
标签: java spring nullpointerexception instantiation