2016-03-22 4 views
4

実行時にJersey ResourceConfigクラスのポートメンバーが0になっているのはなぜですか?SpringブートがJerseyのResourceConfigクラスの@Valueプロパティを設定していません

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); 
    } 
} 

感謝のあなたの助けのために!

+0

https://github.com/dsyer/spring-boot-jersey –

+0

あなたはあなたの特性をXMLに登録されている方法を共有することはできますか? –

+0

スプリングブート時にXML設定ファイルはありません。私は起動時にスプリングブート自体によって読み込まれるapplication.propertiesファイルを使用しています。 – Chrisposure

答えて

5

コンテナのポートは、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); 
    } 
} 
+0

ありがとうございます!それでおしまい! – Chrisposure

関連する問題