以下是我的dispatcher-servlet.xml和配置类的代码:
我在哪里放置我的数据库配置和实体定义?
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
// Default view
registry.addViewController("/").setViewName("home");
registry.addViewController("/login").setViewName("login");
registry.addViewController("/home").setViewName("home");
}
@Bean
public Filter basicMetricFilter() {
return new PieRequestMetricsFilter();
}
}
答案 0 :(得分:3)
你可以将这些配置放在MvcConfig
中,但这不是一个好主意。更好的方法是为应用程序的每个体系结构方面定义一个配置,然后仅在每个配置中放置相关的配置。假设您有一个具有传统分层架构的Web应用程序。在此示例中,您将WebConfig
与MvcConfig
类一样,如下所示:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.web")
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
// Default view
registry.addViewController("/").setViewName("home");
registry.addViewController("/login").setViewName("login");
registry.addViewController("/home").setViewName("home");
}
@Bean
public Filter basicMetricFilter() {
return new PieRequestMetricsFilter();
}
}
此外,您可以拥有包含与数据访问相关配置的RepositoryConfig
,如下所示:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackges = "com.example.repository")
public class RepositoryConfig() {
// put your datasource, entity manager, jdbc templates, tx managers here
}
要将这些配置连接在一起,不需要任何xml文件,例如dispatcher servlet或web.xml。您可以在此方案中定义用于定义父配置和子配置的WepApplicationInitializer
,如下所示:
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RepositoryConfig.class, SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
WebApplicationInitializer
是Spring MVC提供的接口,可确保检测到您的实现并自动用于初始化任何Servlet 3容器。名为WebApplicationInitializer
的{{1}}的抽象基类实现通过简单地重写方法来指定servlet映射和AbstractDispatcherServletInitializer
配置的位置,从而更容易注册DispatcherServlet
。
有关详细信息,请参阅spring文档。