[译]如何使用Spring's Java Configuration (JavaConfig)

类别: 技术文
**关键词: ** JavaConfig | Spring MVC
原文出处:http://johnathanmarksmith.com/

原文标题为:怎样在Spring-MVC-Web中使用Spring's-Java-Configuration (JavaConfig)
标题在简书打出来有点长……囧

SpringMVC-helloworld

这是一个非常基础的在Spring-MVC中使用JavaConfig来编写helloworld web程序的例子.

第一部分我来为我们的web-app创建一个配置类(configuaration class)。下面这个就是我们即将使用的configuaration class案例:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.johnathanmsmith.mvc.web"})
public class WebMVCConfig extends WebMvcConfigurerAdapter
{

    private static final Logger logger = LoggerFactory.getLogger(WebMVCConfig.class);

    @Bean
    public ViewResolver resolver()
    {
        UrlBasedViewResolver url = new UrlBasedViewResolver();
        url.setPrefix("/views/");
        url.setViewClass(JstlView.class);
        url.setSuffix(".jsp");
        return url;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry)
    {
        logger.debug("setting up resource handlers");
        registry.addResourceHandler("/resources/").addResourceLocations("/resources/**");
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
    {
        logger.debug("configureDefaultServletHandling");
        configurer.enable();
    }

    @Bean
    public SimpleMappingExceptionResolver simpleMappingExceptionResolver()
    {
        SimpleMappingExceptionResolver b = new SimpleMappingExceptionResolver();

        Properties mappings = new Properties();
        mappings.put("org.springframework.web.servlet.PageNotFound", "p404");
        mappings.put("org.springframework.dao.DataAccessException", "dataAccessFailure");
        mappings.put("org.springframework.transaction.TransactionException", "dataAccessFailure");
        b.setExceptionMappings(mappings);
        return b;
    }
}

接下来,你需要设置web.xml文件来使用上面的配置类,当然我们还需要来为contectConfigLocation属性设置配置类所在的包(路径)。设置如下:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <servlet>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextClass</param-name>
            <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
        </init-param>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>com.johnathanmsmith.mvc.web.config, com.johnathanmsmith.mvc.web.controller</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

好的,下面我们设置一个基础控制器来展示下页面看看:

@Controller
@RequestMapping("/ask")
class IndexController
{

    private static final Logger logger = LoggerFactory.getLogger(IndexController.class);

    @RequestMapping(method = RequestMethod.GET)
    public String displayRequestPage()
    {
        /*
           I am going to display the helloworld.jsp page now :)
         */
        logger.debug("made it to controller");
        return "helloworld";

    }

}

好的,到这里就全部就绪了...

获取这个项目并运行

要获得这个项目并运行它的话,你需要按照下面的步骤进行:

git clone  git@github.com:JohnathanMarkSmith/springmvc-helloworld.git
cd springmvc-helloworld/
mvn tomcat7:run

在此之后你就可以打开浏览器然后输入地址:http://127.0.0.1:8080/springmvc-helloworld/

嗯,运行起来就是这样了。

这里有我所做的视频(视频地址即原文地址)

如果你有任何问题或者建议可以给我john@johnathanmarksmith.com发邮件

欢迎指正译文错误,不胜感激!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,936评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,989评论 25 708
  • 我遇见了一个人,他身上带着光,走到哪都会亮。吸引你的眼球,你却不敢贸然前进,除非,有必胜的把握。 在他身边,你瞬间...
    古頁阅读 221评论 0 0
  • 每天一小步,看得见的进步。欢迎来到《漫画破词》。这次要和各位聊聊audacious这个词。 “我们想用五年推动中国...
    Jack的英语世界阅读 908评论 2 5