首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CXF与Spring @Configurable问题

CXF与Spring @Configurable问题
EN

Stack Overflow用户
提问于 2013-02-06 16:06:42
回答 2查看 640关注 0票数 1

目前,我正面临将CXF web服务与Spring @Configurable注释混合在一起的问题。

一方面,我让我的CXF web服务完全工作,并配置如下:

代码语言:javascript
复制
<import resource="classpath:some-other-context.xml" />

<jaxws:server id="Init"
        serviceClass="package.to.my.ServiceInterface"
        address="/">
        <jaxws:serviceBean>
            <bean class="package.to.my.BADematInitImpl">
            </bean>
        </jaxws:serviceBean>
</jaxws:server>

<context:spring-configured />

在我的some-other-context.xml中是包含以下Bean的Spring配置:

代码语言:javascript
复制
@Configurable(autowire = Autowire.BY_TYPE)
public class MyConfigurable {

    @Autowired(required=true)
    private A a;

    @Autowired(required=true)
    private B b;

    @Autowired(required=true)
    private C c;

...

}

但是,当我试图在我的服务中创建一个新的MyConfigurable bean实例时,由于空值应该是A、B和C对象,所以我得到了一个MyConfigurable。

知道吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-07 09:31:27

我终于发现了这个问题。

我需要将这个配置添加到我的第三部分应用程序XML文件中:

代码语言:javascript
复制
<context:load-time-weaver/>

..。并将此参数添加到我的jvm启动命令行

代码语言:javascript
复制
-javaagent:"path\to\my\spring-agent.jar"

就像一种魅力。

我理解这是因为Spring需要有一个实体来管理它的AOP部分,这样就可以很好地注入依赖项。如果有人有进一步的解释,那将是很有趣的。

票数 0
EN

Stack Overflow用户

发布于 2013-02-07 08:15:45

@ConfigurableAOP负载时间编织工具使用的标记。我想您没有使用任何AOP,因为在您的问题中没有提到任何关于它的内容。第二件事:您不必在required=true注释中使用@Autowired,因为truerequired的默认值。我建议你这样修改你的代码:

将这些添加到spring配置文件中的元素中:

代码语言:javascript
复制
<context:component-scan base-package="your.pckg.toscan"/>

文件上说:

扫描类路径,寻找将自动注册为Spring的带注释的组件。默认情况下,将检测到Spring提供的@组件、@Repository、@Service和@Controller原型。

代码语言:javascript
复制
<context:annotation-config/>

文件上说:

激活要在bean类中检测到的各种注解:Spring的@Required和@Autowired,以及JSR 250的@PostConstruct、@PreDestroy和@Resource (如果可用)、JAX-WS的@WebServiceRef (如果可用)、EJB 3的@EJB (如果可用的话)和JPA的@PersistenceContext和@PersistenceUnit (如果可用的话)。或者,您可以选择为这些注释激活单个BeanPostProcessors。

因此,将代码更改为:

代码语言:javascript
复制
@Component
public class MyConfigurable {

    @Autowired
    private A a;

    @Autowired
    private B b;

    @Autowired
    private C c;

...

}

一切都应该很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14733466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档