java - 从非托管bean访问DAO服务方法

标签 java spring hibernate managed-bean

我正在使用 Spring 3 和 Hibernate 4

如何在非 ManagedBean 中使用以下内容

@Inject 
EmployeeService employeeService 

或者,如果我想访问 DAO 方法,我必须将其设为 ManagedBean

@Named("mymanagedbean")
@ViewAccessScoped 

我有一些 Converter 类,为了访问 DAO 服务方法,我必须将其用作 ManagedBean,即使它们不是 ManagedBean。

调用 DAO 服务方法的最佳方法是什么?

谢谢

最佳答案

您将需要实现 Spring 接口(interface) ApplicationContextAware然后设置ApplicationContext。然后你需要提供静态方法来获取bean实例。

public class SpringApplicationContext implements ApplicationContextAware {

private static ApplicationContext CONTEXT;

public void setApplicationContext(ApplicationContext context)
        throws BeansException {
    CONTEXT = context;
}
    public static Object getBean(String beanName) { ...}
    public static <T> T getBean(Class<T> arg0) {...}

然后在您的非托管 bean 中您可以调用 SpringApplicationContext.getBean方法通过传入EmployeeService.class作为参数或 bean 名称作为参数。

关于java - 从非托管bean访问DAO服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128228/

相关文章:

java - 如何使用 mockMvc 检查响应正文中的字符串

spring - 收到错误没有定义类型 [javax.persistence.EntityManagerFactory] ​​的合格 bean : expected single matching bean but found 2

java - 如何避免将不存在的外键插入@AssociationOverrides的联接表中

java - 如何在Spring Boot应用程序中的@Transactional方法中使用纯Hibernate保证原子批量插入

java - 获取广告客户 ID 时出错

java - 尝试进行 Maven 全新安装时,persistence.xml 文件出现问题

java - sun.security.ssl.allowUnsafeRenegotiation

java - Spring Boot JPA如何处理子表更新

spring - 是否有生成 Spring 应用程序上下文依赖关系图/图表的工具?

postgresql - 一对多的延迟加载不适用于 hibernate 和 lombok