gpt4 book ai didi

java - Jax-ws、spring 和 SpringBeanAutowiringSupport

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:01 26 4
gpt4 key购买 nike

虽然在我的@Webservice 类中我扩展了 SpringBeanAutowiringSupport, Autowiring 根本不适用于 Spring 2.5,tomcat6.

没有注入(inject)任何东西。

我在 main 方法中测试了那些 beans Autowiring ,使用 classpathcontext,一切都被注入(inject)了。但不适用于 jax-ws 端点。

你有什么想法吗?

最佳答案

我找到了解决方案。问题是 Spring 不会为 @WebService 类 Autowiring bean(在其他论坛上发现它可能是当前的错误)。

解决方案:

使用 org.springframework.beans.factory.config.AutowireCapableBeanFactory.class 而不是使用 @Autowired 注释来注入(inject)你的 beans(例如 @Service, @Repository 等)。

所以:

  1. 包含@Resource WebServiceContext

    @Resource
    private WebServiceContext context;
  2. 用它来获取你的bean

    MyDAO myDAO = null;
    ServletContext servletContext = (ServletContext) context
    .getMessageContext().get("javax.xml.ws.servlet.context");
    WebApplicationContext webApplicationContext = WebApplicationContextUtils
    .getRequiredWebApplicationContext(servletContext);
    myDAO = (MyDAO) webApplicationContext
    .getAutowireCapableBeanFactory().getBean("myDAO");

    MyDAO类可以如下:

    @Service
    @Qualifier("myDAO")
    @Transactional
    public class MyDAO {
    private HibernateTemplate hibernateTemplate;

    @Required
    @Autowired
    public void setSessionFactory(SessionFactory sessionFactory) {
    this.hibernateTemplate = new HibernateTemplate(sessionFactory);
    }

    public MyInfo getMyInfo(Long id){
    return this.hibernateTemplate.get(MyInfo.class, id);
    }

    //...
    }
  3. 在此之后,您可以在 @WebMethod 方法中使用 myDAO 对象。

关于java - Jax-ws、spring 和 SpringBeanAutowiringSupport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943082/

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