6 回答
TA贡献1911条经验 获得超7个赞
实际上,您应该使用JVM托管对象或Spring托管对象来调用方法。根据控制器类中的上述代码,您将创建一个新对象来调用具有自动连接对象的服务类。
MileageFeeCalculator calc = new MileageFeeCalculator();
所以它不会那样工作。
该解决方案使此MileageFeeCalculator成为Controller本身的自动连线对象。
像下面一样更改您的Controller类。
@Controllerpublic class MileageFeeController {
@Autowired
MileageFeeCalculator calc;
@RequestMapping("/mileage/{miles}")
@ResponseBody
public float mileageFee(@PathVariable int miles) {
return calc.mileageCharge(miles);
}}TA贡献1863条经验 获得超2个赞
我曾经不习惯的时候遇到过同样的问题the life in the IoC world。@Autowired我的一个bean 的字段在运行时为null。
根本原因是,我不是使用由Spring IoC容器(其@Autowired字段被indeed正确注入)维护的自动创建的bean,而是newing我自己的bean类型的实例并使用它。当然这个@Autowired字段是空的,因为Spring没有机会注入它。
TA贡献1966条经验 获得超4个赞
这似乎是罕见的情况,但这是发生在我身上的事情:
我们使用的@Inject不是@AutowiredSpring支持的javaee标准。每个地方都运转良好,豆子正确注入,而不是一个地方。豆注射似乎是一样的
@InjectCalculator myCalculator
最后我们发现错误是我们(实际上,Eclipse自动完成功能)导入com.opensymphony.xwork2.Inject而不是javax.inject.Inject!
所以总结一下,确保您的注释(@Autowired,@Inject,@Service,...)有正确的包!
添加回答
举报
