eclipse - 创建带有注释且无 xml 文件的 Spring 4 MVC 项目

标签 eclipse spring spring-mvc spring-tool-suite

我是 Spring MVC 和 Hibernate 的新手。我正在尝试按照教程启动一个项目,但我遇到了问题,因为我的项目结构与我正在阅读的教程不一致。

我已经下载了最新的 STS,并且确实看到了创建 Spring MVC 项目的选项。然而它基于 Spring 3 并且仍然使用 XML 文件。据我所知,从 Spring 3 开始,似乎有一种无需 XML 文件即可完成此操作的方法。相对于 XML 文件,我更喜欢注释。

如何创建一个基于注释并最少依赖 xml 文件的 Spring MVC 4 应用程序?

编辑: 我想创建一个网络项目

最佳答案

这是一个完整的 java 配置的简单示例。您将需要:

  • 扩展 AbstractAnnotationConfigDispatcherServletInitializer 的类替换旧的web.xml文件
  • 一个或多个 @Configuration带注释的类来初始化根上下文(替换旧的 applicationContext.xml )
  • 一个或多个 @Configuration带注释的类来初始化 DispatcherServlet上下文(替换旧的 dispatcher-servlet.xml )

这是 web.xml :

public class WebAppConf extends AbstractAnnotationConfigDispatcherServletInitializer  {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // declare root context configuration classes
        return new Class<?>[]{ RootConf.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        // declare servlet context configuration classes
        return new Class<?>[]{ ServletConf.class };
    }

    @Override
    protected String[] getServletMappings() {
        // mapping of DispatcherServlet
        return new String[]{"/"};
    }

    @Override
    protected void customizeRegistration(Dynamic registration) {
        // additional configuration, here for MultipartConfig
        super.customizeRegistration(registration);
        MultipartConfigElement multipartConf = new MultipartConfigElement("", 200000L, -1L, 0);
        registration.setMultipartConfig(multipartConf);
    }
}

RootConf将声明业务模型、服务和 dao bean,此处未显示。

ServletConf声明 Controller 和 servlet 配置:

@Configuration
@EnableWebMvc
// declare where to find annotated controllers
@ComponentScan({"org.example.web"})
public class ServletConf extends WebMvcConfigurerAdapter {
    @Bean
    MultipartResolver multipartResolver() {
        return new StandardServletMultipartResolver();
    }
    @Bean
    ViewResolver internalViewResolver() {
        // the view resolver bean ...
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

如上所述,它是 squeletal,但它来自一个工作的最小示例,因此您应该能够从它开始并随意扩展它。在我的示例中,上述三个类位于 org.example.config 中。永远不会扫描自动检测其他配置类或带注释的 bean 的包。

希望有帮助...

关于eclipse - 创建带有注释且无 xml 文件的 Spring 4 MVC 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519426/

相关文章:

java - 是否可以在实例化期间指定 schema_name?

spring - @Component @Scope ("singleton") 公共(public)类 BootStrapper 实现 ApplicationListener<ContextStartedEvent> {

java - 通过 Spring @RequestParam 表示多重排序

spring - 生命周期配置未涵盖插件执行

带有红色加号的 Eclipse Subclipse 图标

linux - 工具栏未显示在 Ubuntu 17.04 的 Eclipse Neon 中

java - Spring Rest Doc 不生成 html

java - REST 服务仅返回当前用户相关的资源

eclipse - 如何在Eclipse平台上自动启动/热启动OSGi服务

java - 为什么合并我的代码后我的 @JsonAlias 不起作用?