【问题标题】:Spring Boot is not setting the @Value property in Jersey's ResourceConfig classSpring Boot 没有在 Jersey 的 ResourceConfig 类中设置 @Value 属性
【发布时间】:2016-03-22 09:05:37
【问题描述】:

为什么在运行时我的 Jersey ResourceConfig 类中的端口成员为 0?

Application.property 文件:

#web server
server.port=9000

JerseyConfig 文件:

@Component
@ApplicationPath(Pathes.APPLICATION_PATH)
public class JerseyConfig extends ResourceConfig {

    @Value("${server.port}")
    private int port;

    public JerseyConfig() {
        final BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.0");
        beanConfig.setHost("localhost:" + port);
        beanConfig.setBasePath(Pathes.APPLICATION_PATH);
        beanConfig.setResourcePackage(myPackages);
        beanConfig.setScan(true);

        register(ApiListingResource.class);
        register(SwaggerSerializers.class);
    }
}

感谢您的帮助!

【问题讨论】:

  • 您能分享一下您的属性是如何在 xml 中注册的吗?
  • 在 spring boot 中没有 XML 配置文件。我正在使用 application.properties 文件,该文件由 spring boot 本身在启动时加载。

标签: java spring dependency-injection spring-boot jersey-2.0


【解决方案1】:

在 Spring 容器初始化之前,您在构造函数中使用端口。 Spring 无法做到这一点。

改为进行构造函数注入:

@Component
@ApplicationPath(Pathes.APPLICATION_PATH)
public class JerseyConfig extends ResourceConfig {

    @Autowired
    public JerseyConfig(@Value("${server.port}") int port) {
        final BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.0");
        beanConfig.setHost("localhost:" + port);
        beanConfig.setBasePath(Pathes.APPLICATION_PATH);
        beanConfig.setResourcePackage(myPackages);
        beanConfig.setScan(true);

        register(ApiListingResource.class);
        register(SwaggerSerializers.class);
    }
}

【讨论】:

    猜你喜欢
    • 2016-12-27
    • 2020-08-21
    • 2020-12-24
    • 2021-05-16
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多