Wie config @EnableConfigurationProperties, @ConfigurationProperties mit WebApplicationInitializer?

Will ich Lesen.Eigenschaften, die mit

@EnableConfigurationProperties and @ConfigurationProperties.

Ich bin in der Lage zu tun, die mit den folgenden codes:

Application.java

@SpringBootApplication
@EnableConfigurationProperties(ApplicationConfiguration.class)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


ApplicationConfiguration.java

@ConfigurationProperties(prefix = "server")
public class ApplicationConfiguration {

    private String port;

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }
}

TestController.java

@Controller
public class TestController {

    @Autowired
    ApplicationConfiguration applicationConfiguration;

    @RequestMapping("/test")
    @ResponseBody
    public String test() {
        if (applicationConfiguration != null) {
            return applicationConfiguration.getPort();
        }
        return "1";
    }
}

application.properties

server.port = 8085

Will ich jetzt ersetzen SpringBoot(Application.java) mit WebApplicationInitializer so, dass ich einen externen Behälter. Hier ist mein code:

CommonInitializer.java

public class CommonInitializer implements WebApplicationInitializer{
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {

        AnnotationConfigWebApplicationContext annotationConfigWebApplicationContext = new AnnotationConfigWebApplicationContext();
        annotationConfigWebApplicationContext.register(WebConfiguration.class);
        annotationConfigWebApplicationContext.setServletContext(servletContext);

        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(annotationConfigWebApplicationContext));

        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
} 

WebConfiguration.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "hello")
@EnableAutoConfiguration
@EnableConfigurationProperties(ApplicationConfiguration.class)
public class WebConfiguration {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");

        return viewResolver;
    }
}

Nachdem Sie dies getan haben, ich bin nicht in der Lage, um den port(port ist null, applicationConfiguration ist nicht null) in application.proerties. Irgendeine Idee? Was bin ich?

Für die Bereitstellung auf einem externen Behälter erweitern Sie ganz einfach die SpringBootServletInitializer wie in der Referenz-Anleitung.
warum verwenden Sie WebApplicationInitializer? Sie erstellen Projekt-Frühling

InformationsquelleAutor ItsJack | 2015-04-09

Schreibe einen Kommentar