【发布时间】:2015-11-29 16:05:00
【问题描述】:
我使用的是 Spring 4.1.1。 我的 spring-dispatcher-servlet.xml 中有以下内容
<context:component-scan base-package="com.au.controller,com.au.util" />
<mvc:resources location="/" mapping="/**" />
<mvc:annotation-driven />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/caballocation" />
<property name="username" value="root" />
<property name="password" value="1234" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="AddImplDao" class="com.au.dao.AddressDaoImpl" />
我在 com.au.controller 包中有以下控制器类
@Controller
public class ControllerMain {
@Autowired
AddressDao obj;
@RequestMapping(value = "/test")
public @ResponseBody String test(){
//logger.debug("getWelcome is executed!");
obj.select();
return "1";
}
}
在上面的代码中,obj.select 在自动装配时工作。
但是 com.au.util 包中的以下类具有自动装配对象的 null 值。
public class DistanceCalculator {
@Autowired
AddressDao obj1;
public String calculate(String from, String to) throws IOException, JSONException {
..
Map output = obj1.calc(from, to);
..
}
Obj1 在执行时为空。在 obj1.calc(from,to) 处获取 java.lang.NullPointerException
以下是接口及其实现。 AddressDao.java
public interface AddressDao {
public void select();
public Map calc(String from,String to);
}
AddressDaoImpl.java
public class AddressDaoImpl implements AddressDao {
@Autowired
private JdbcTemplate jdbcTemplate;
private SimpleJdbcCall simpleJdbcCall;
@Autowired
public void setDataSource(DataSource dataSource) {
this.simpleJdbcCall = new SimpleJdbcCall(dataSource).withProcedureName("CheckForValuesInDB");
}
@Override
public void select() {
// TODO Auto-generated method stub
}
@Override
public Map calc(String from, String to) {
// TODO Auto-generated method stub}
这背后的原因是什么?
【问题讨论】:
-
你有什么错误吗?
-
@RossiRobinsion 是的,如上所述,我在 DistanceCalculator 类中遇到了 nullPointerException
-
代替这个
你可以试试这个吗? 。也不要这样做: ,在您的 AddressDaoImpl 类上添加 @Service 注释。 -
@RossiRobinsion 我试过这个。还是一样的错误
-
@RossiRobinsion 在 distanceCalculator.java 中我收到错误,但在 MainController.java 中它正在自动连接
标签: java spring spring-mvc autowired spring-annotations