Java 其他类中的Spring和Hibernate注入
我是这门学科的新手 我有配置 试着注射它Java 其他类中的Spring和Hibernate注入,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我是这门学科的新手 我有配置 试着注射它 @Controller public class HelloController { @Autowired HibernateTemplate hibernateTemplate; @RequestMapping(value = "/hello.htm", method = RequestMethod.GET) public @ResponseBody String save() throws Exceptio
@Controller
public class HelloController {
@Autowired
HibernateTemplate hibernateTemplate;
@RequestMapping(value = "/hello.htm", method = RequestMethod.GET)
public @ResponseBody String save() throws Exception {
hibernateTemplate.save(new Some(Long.valueOf("33"), Integer.valueOf("1"), Double.valueOf("1"), Short.valueOf("0")));
}
}
它起作用了
但如果我尝试在其他类中使用@Autowired,我就有NPE
范例
我知道“ht”是空的
我不知道代码中发生了什么以及为什么它不起作用,我认为这是因为我的类没有在xml文件中注册。
请帮我举个例子。
谢谢大家! 就像@greybearedgeek说的,它应该是一个春豆。您可以将@Component注释添加到类中,以便由spring进行管理:
@Component
public class SomeFacade extends AbstractFacade<Some> {
@Autowired
HibernateTemplate hibernateTemplate;
@Override
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
}
是的,为了让它工作,SomeFacade需要是一个Springbean,并且需要被注入HelloController,而不是HelloController构建它。
@Controller
public class HelloController {
@RequestMapping(value = "/hello.htm", method = RequestMethod.GET)
public @ResponseBody String save() throws Exception {
SomeFacade df = new SomeFacade();
HibernateTemplate ht = df.getHibernateTemplate();
}
}
@Component
public class SomeFacade extends AbstractFacade<Some> {
@Autowired
HibernateTemplate hibernateTemplate;
@Override
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
}
<context:component-scan base-package="your.package" />
@Controller
public class HelloController {
@Autowired
private SomeFacade df;
@RequestMapping(value = "/hello.htm", method = RequestMethod.GET)
public @ResponseBody String save() throws Exception {
HibernateTemplate ht = df.getHibernateTemplate();
}
}