gpt4 book ai didi

spring - Java Spring 配置和 Resteasy

转载 作者:行者123 更新时间:2023-12-02 12:11:04 24 4
gpt4 key购买 nike

我正在尝试整合 Resteasy 和 Spring;我已关注 Resteasy 的文档和这篇文章:Inject Spring beans into RestEasy 。我让它在其余类上使用 @Autowire 或其他 Spring 注释,但我想这样做,让我的其余类免受 spring(或 DI)依赖。我还想仅通过java配置来配置spring。在 spring 配置中我添加了以下内容:

<context:component-scan base-package="package.where.spring.configuration.beans.are , package.where.rest.classes.are">
<context:include-filter type="annotation" expression="javax.ws.rs.Path"/>
</context:component-scan>

当然,我在 web.xml 中也有,这样 SpringContextLoaderListener 就会拾取 Spring 配置:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring-config.xml</param-value>
</context-param>

删除@Autowire注释,如果我还删除第一个包(我通过Spring java配置配置注入(inject)),则不会发生注入(inject)并且字段保持为空;如果我删除第二个包,resteasy 将无法识别其余类的 url。

我想在Spring配置中配置注入(inject),有没有办法让resteasy识别外部配置的spring bean的路径?

编辑:我注意到,如果您正确配置 Spring,我正在尝试使用 @Provider 注解的类进行操作:

 <context:component-scan base-package="my.package1 , my.package2">
<context:include-filter type="annotation" expression="javax.ws.rs.ext.Provider"/>
</context:component-scan>

但谜团比我最初想象的要深……我更有信心,我走在正确的轨道上,只是错过了一步!

最佳答案

更好的方法是使用 JSR-330 注释。

而不是@Autowired,更喜欢使用@Inject。 Spring 支持 JSR-330 注释,并将在幕后使用 Autowire 实现。对于使用 @Component@Service 注解的 Spring beans,只需将注解替换为 JSR-330 特定的 @Named

如果您使用的是 Maven,只需在您的 pom.xml 文件中包含以下内容即可。

<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

关于spring - Java Spring 配置和 Resteasy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190050/

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