Spring Boot没有在Jersey的ResourceConfig类中设置@Value属性

Chr*_*ure 4 java spring dependency-injection jersey-2.0 spring-boot

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

Application.property文件:

#web server
server.port=9000
Run Code Online (Sandbox Code Playgroud)

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

lub*_*nac 5

在Spring容器初始化之前,您在构造函数中使用port.你不能用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);
    }
}
Run Code Online (Sandbox Code Playgroud)