gpt4 book ai didi

java - 其他类中的 Spring 和 Hibernate 注入(inject)

转载 作者:行者123 更新时间:2023-12-01 14:57:20 25 4
gpt4 key购买 nike

我是这个学科的新手

我有配置

并尝试注入(inject)它

@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示例

public class SomeFacade extends AbstractFacade<Some> {

@Autowired
HibernateTemplate hibernateTemplate;

@Override
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}

}

并使用它

@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();
}
}

我的“ht”为空

我不知道该代码中发生了什么以及为什么它不起作用,我认为这是因为我的类没有在 xml 文件中注册。请帮忙举个例子。谢谢!

最佳答案

就像 @GreybeardedGeek 所说,它需要是一个 Spring bean。您可以将 @Component 注释添加到您的类中,以便它将由 spring 管理:

@Component
public class SomeFacade extends AbstractFacade<Some> {

@Autowired
HibernateTemplate hibernateTemplate;

@Override
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}

}

如果您的 xml 文件(根上下文)中尚不存在组件扫描,请不要忘记添加它:

<context:component-scan base-package="your.package" />

如果您使用此解决方案,请注入(inject)组件而不是使用 new 关键字:

@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();
}
}

关于java - 其他类中的 Spring 和 Hibernate 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com