在包装类型为war的Spring Boot应用程序中,我正在配置Spring MVC。据我所知,我们不必手动配置Dispatcher Servlet。但是,我用旧的web.xml样式我用来配置Dispatcher Servlet然后我用来传递contextClass和contextConfigLocation如下
tooltip
我相信这是为了表明SpringMvcConfig(我的Spring mvc配置的自定义类)是Spring MVC的配置类..
但是,在Spring boot中,如果自动配置Dispatcher Servlet,我如何将自定义类传递给调度程序Servlet?
在我的Spring Boot应用程序中,我的SpringMvcConfig类从WebMvcConfigurerAdapter扩展,并使用@Configuration类注释
需要帮助......
答案 0 :(得分:0)
如果您的配置类位于同一个包或主类的子包中(使用@SpringBootApplication
注释),则无需执行任何操作。 @SpringBootApplication
扫描包中的所有组件和所有子包。
但是,如果您想要扫描任何其他包,可以使用@ComponentScan
。一个例子:
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackageClasses = {SpringSampleAppApplication.class, LemonConfig.class})
public class SpringSampleAppApplication {
public static void main(String[] args) {
SpringApplication.run(SpringSampleAppApplication.class, args);
}
}
使用自定义@SpringBootApplication
了解@ComponentScan
如何被三个注释替换。
还有其他方法可以导入配置文件,但我发现以上最简单的常见方案。
答案 1 :(得分:0)
在由@Configuration注释的配置类中,您可以定义dispatcherServlet并将init-parameter传递给它。
@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
ServletRegistrationBean registrationBean = new ServletRegistrationBean(dispatcherServlet());
registrationBean.addInitParameter("contextClass","org.springframework.web.context.support.AnnotationConfigWebApplicationContext");
registrationBean.addInitParameter("contextConfigLocation","com.xxx.yyy.jdorderspringmvcweb.config.SpringMvcConfig");
return registrationBean;
}
另一种方法是创建参数映射,然后为注册bean设置参数。 This流显示了如何执行此操作。
答案 2 :(得分:0)
我认为您必须按如下方式创建一个配置类:
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MySpringMvcDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { DemoAppConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}