2016-03-22 3 views
4

Warum ist mein Port-Mitglied 0 in meiner Jersey ResourceConfig-Klasse zur Laufzeit?Spring Boot setzt nicht die @ Value-Eigenschaft in Jerseys ResourceConfig-Klasse

Application.property Datei:

#web server 
server.port=9000 

JerseyConfig Datei:

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

Dankten für Ihre Hilfe!

+0

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

+0

Können Sie erzählen, wie Ihre Objekte im XML registriert? –

+0

Im Frühling Boot gibt es keine XML-Konfigurationsdatei. Ich benutze die Datei application.properties, die beim Start von Spring Boot selbst geladen wird. – Chrisposure

Antwort

5

Sie verwenden den Port im Konstruktor, bevor er vom Spring-Container initialisiert wird. Das kannst du nicht mit Spring machen.

Do Konstruktor Injektion statt:

@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

Danke! Das ist es! – Chrisposure