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
不是@Autowired
Spring支持的javaee标准。每个地方都运转良好,豆子正确注入,而不是一个地方。豆注射似乎是一样的
@InjectCalculator myCalculator
最后我们发现错误是我们(实际上,Eclipse自动完成功能)导入com.opensymphony.xwork2.Inject
而不是javax.inject.Inject
!
所以总结一下,确保您的注释(@Autowired
,@Inject
,@Service
,...)有正确的包!
添加回答
举报