Spring MVC-使用Java类配置新建项目

  • 2017年9月30日 本文简略介绍了Spring Framework以及Spring MVC,然后通过类配置的方式提供了一个最简单的demo
  • 2017年10月1日 添加了源码地址

    • 一 简介
      • 1 Spring 框架
      • 2 Spring MVC
    • 二 历史
      • 1 xml配置
      • 2 注解配置
      • 3 Java配置
    • 三 Java类配置
      • 1 新建Spring项目
      • 2 添加maven框架
      • 3 划分项目结构
      • 4 类配置
      • 5 添加控制器和视图
      • 6 测试
    • 四 源码地址
    • 五 参考链接


一、 简介

1.1 Spring 框架

Spring框架是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架

1.2 Spring MVC

Spring框架提供的灵活的基于核心Spring功能的MVC网页应用程序框架


二、 历史

2.1 xml配置

2004年3月,Spring 1.0发布 ,从此开启Spring 1.x时代。Spring项目开发基本都是使用xml配置。xml配置会随着项目的扩大而变大,而且配置繁杂,容易出错。

2.2 注解配置

2006年10月,Spring 2.0发布。Spring 2.x提供了声明Bean的注解,大大减少了配置。

2.3 Java配置

2009年12月,Spring 3.0发布;2013年12月,Spring 4.0发布,从3.x到4.x提供的Java类配置,大大减少了以前纷繁复杂的配置。


三、 Java类配置

3.1 新建Spring项目

Spring MVC-使用Java类配置新建项目_第1张图片

3.2 添加maven框架

1. 右键项目->Add frameword support
Spring MVC-使用Java类配置新建项目_第2张图片

2. 修改pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>groupIdgroupId>
    <artifactId>DemoartifactId>
    <version>1.0-SNAPSHOTversion>
    <packaging>warpackaging>

    <properties>
        <spring.version>4.1.7.RELEASEspring.version>
    properties>

    <dependencies>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
        dependency>
        <dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>javax.servlet.jsp-apiartifactId>
            <version>2.3.1version>
        dependency>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
            <version>1.2version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-beansartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.3.0version>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>1.2.3version>
        dependency>
    dependencies>

project>

3.3 划分项目结构

1. 当前目录结构
Spring MVC-使用Java类配置新建项目_第3张图片

2. 修改目录结构
Spring MVC-使用Java类配置新建项目_第4张图片

3.4 类配置

1. 在config下新建文件DemoServiceConfig.java

package com.demo.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@ComponentScan(value={"com.demo.service"})
@MapperScan("com.demo.persist")
@EnableTransactionManagement(proxyTargetClass=true)
@EnableAsync
public class DemoServiceConfig {

}

2. 在config下新建DemoWebConfig.java

package com.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan("com.demo.controller")
public class DemoWebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

3. 在config下新建SpringMvcInitializer.java

package com.demo.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected Class[] getRootConfigClasses() {
        return new Class[] { DemoServiceConfig.class };
    }

    protected Class[] getServletConfigClasses() {
        return new Class[] { DemoWebConfig.class };
    }

    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    protected Filter[] getServletFilters() {
        CharacterEncodingFilter charFilter = new CharacterEncodingFilter();
        charFilter.setEncoding("UTF-8");
        charFilter.setForceEncoding(true);
        return new Filter[] { charFilter };
    }
}

3.5 添加控制器和视图

  1. 在controller里添加一个DemoController.java控制器
package com.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
public class DemoController {

    @RequestMapping(value = "/demo")
    public String demo(HttpServletRequest request, HttpServletResponse response) {
        return "demo";
    }
}

2. 添加视图
在/WEB-INF/下添加目录jsp,在jsp下添加demo.jsp。该结构要与DemoWebConfig.java中配置的相同。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>demotitle>
  head>
  <body>
  demo
  body>
html>

3. 最终项目结构
Spring MVC-使用Java类配置新建项目_第5张图片

3.6 测试

1. localhost:8080
Spring MVC-使用Java类配置新建项目_第6张图片

2. localhost:8080/demo
Spring MVC-使用Java类配置新建项目_第7张图片

四、 源码地址

Spring MVC Demo

五、 参考链接

  1. 家蛙树
    http://www.javatree.cn
  2. 维基百科 Spring Framework
    https://zh.wikipedia.org/wiki/Spring_Framework
  3. Spring docs
    https://spring.io/docs
  4. 汪云飞. JavaEE开发的颠覆者 : Spring Boot实战[M]. 北京 : 电子工业出版社, 2016
    http://item.jd.com/10235383371.html

你可能感兴趣的:(Java)