全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Spring MVC4 纯注解配置教程

阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目。

在传统的Spring项目中,我们要写一堆的XML文件。而这些XML文件格式要求又很严格,很不便于开发。而网上所谓的0配置,并不是纯粹的0配置,还是要写一些xml配置,只是用了几个@Service,@Controller注解而已。

在这里,我讲介绍一种新的配置方式,一行XML代码都不需要,什么web.xml,Application-context.xml,Beans.xml。

首先建立一个Maven项目,Packageing方式为war,项目结构为标准Maven WebApp结构。

pom文件如下(很多依赖都没用,懒得去掉了): 

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.csonezp</groupId>
  <artifactId>springdemo</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>dataplatform Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
    <spring.version>4.0.1.RELEASE</spring.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>

    <!-- Spring dependencies -->
    <dependency>
      <groupId>asm</groupId>
      <artifactId>asm-commons</artifactId>
      <version>2.2.3</version>
    </dependency>
    <dependency>
      <groupId>asm</groupId>
      <artifactId>asm</artifactId>
      <version>2.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>


    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.2.2</version>
    </dependency>
    <!-- Servlet API, JSTL -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-core-asl</artifactId>
      <version>1.8.4</version>
    </dependency>

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.8.4</version>
    </dependency>

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>


    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.8</version>
    </dependency>


    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20090211</version>
    </dependency>


    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>

    <dependency>
      <groupId>spy</groupId>
      <artifactId>spymemcached</artifactId>
      <version>2.6</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.6</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>dataplatform</finalName>
  </build>
</project>

这个时候,就该进行Spring配置了。按传统方式来的话,首先要去web.xml写一堆配置,然后建立个管理beab的Beans.xml,管理spring mvc 的xml,再写一坨一坨Bean。就是先进一点的(也就是很多人说的0配置),也就是自己的业务Bean不用写进xml了,还是很麻烦。

而我这里讲的方式,则是完全不修改任何web.xml代码,不写一行XML代码的方式。

 首先,在项目立建立一个Config.java文件:

/**
 * Created by zhangpeng on 16-3-22.
 * 取代Beans.xml,纯注解配置各种BEAN
 */
@Configuration
@ComponentScan("com.csonezp")
@EnableWebMvc
public class Config {
  /**
   * jsp视图解析器的bean
   * @return
   */
  @Bean
  public UrlBasedViewResolver setupViewResolver() {
    UrlBasedViewResolver resolver = new UrlBasedViewResolver();
    resolver.setPrefix("/WEB-INF/");
    resolver.setSuffix(".jsp");
    resolver.setViewClass(JstlView.class);
    return resolver;
  }

  /**
   * 配置数据源
   * @return
   */
  @Bean(name = "dataSource")
  public ComboPooledDataSource getDataSource() {
    try {

      ComboPooledDataSource dataSource = new ComboPooledDataSource();
      dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mfdb");
      dataSource.setDriverClass("com.mysql.jdbc.Driver");
      dataSource.setUser("root");
      dataSource.setPassword("zp1228");
      dataSource.setMaxPoolSize(75);
      return dataSource;
    } catch (Exception e) {
      return null;
    }
  }
}

@Configuration注解就是告诉Spring这个是一个配置文件类,这里配置的Bean要交给Spring去管理。这个就是用来取代Beans.xml这种文件的。

@ComponentScan("com.csonezp")这个注解就是配置包扫描用的,不必多说了

@EnableWebMvc ,启用Spring MVC支持

这里面配置了两个Bean,第一个就是JSP的视图解析器,第二个则是配置了一个数据源。这些都可以对应到XML文件里面去的。找一个传统Spring项目,用xml文件对比着我这个类去看,会对这种配置方式有更深的了解。

下面要建立一个WebInitializer类继承WebApplicationInitializer,在这里添加一个servlet。这一步是用来取代在web.xml中添加servlet的步骤

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;

public class WebInitializer implements WebApplicationInitializer {

  public void onStartup(ServletContext servletContext) throws ServletException {
     
    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(Config.class); 
    ctx.setServletContext(servletContext);  
    
    Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
    servlet.addMapping("/"); 
    servlet.setLoadOnStartup(1); 
     
  } 

}

这样就OK啦!让我们写一些代码来测试一下吧! 

import org.springframework.stereotype.Service;

/**
 * Created by zhangpeng on 16-3-22.
 */
@Service
public class HelloService {
  public String getHello(String name) {
    return name + ",Hello!";
  }
}

import com.guduo.dataplatform.service.HelloService;
import com.guduo.dataplatform.service.MovieService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Created by zhangpeng on 16-3-22.
 */
@Controller
@RequestMapping("/test")
public class TestController {

  @Autowired
  HelloService helloService;
  @Autowired
  MovieService movieService;


  @RequestMapping("/hello")
  public String sayHello(@RequestParam("name") String name, ModelMap model) {
    model.put("hello", helloService.getHello(name));
    return "hello";
  }
}

一个service,一个controller。

启动项目,在浏览器中输入地址http://localhost:8080/dp/test/hello?name=sss

页面显示sss,Hello!

完工!

额,忘了演示Confgig里配置的bean如何使用了。其实和XML里的一样。这里拿一个DAO做演示吧,这里就注入了我们在config里配置的那个数据源

@Repository
public class MoviePlayIncDao {
  private DataSource dataSource;

  private JdbcTemplate jdbcTemplateObject;

  @Autowired
  public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
    this.jdbcTemplateObject = new JdbcTemplate(dataSource);
  }

  public List<MoviePlayIncreament> getMoviePlayInc(int movieId) {
    try {
      String SQL = "select * from movieplayincreament where movieid=?";
      List<MoviePlayIncreament> list = jdbcTemplateObject.query(SQL, new MoviePlayIncMapper(), new Object[]{movieId});
      return list;
    } catch (Exception e) {
      return null;
    }
  }


}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring mvc4 注解配置  # springmvc4 注解  # springmvc4全注解配置  # 建立一个  # 在这里  # 则是  # 要写  # 自己的  # 是一个  # 几个  # 都不  # 第一个  # 让我们  # 我这  # 要去  # 用了  # 去看  # 第二个  # 会对  # 掉了  # 这个时候  # 人说  # 找一个 


相关文章: 如何快速生成凡客建站的专业级图册?  如何在IIS中新建站点并配置端口与IP地址?  建站主机与服务器功能差异如何区分?  建站之星如何快速解决建站难题?  网站专业制作公司有哪些,做一个公司网站要多少钱?  建站VPS配置与SEO优化指南:关键词排名提升策略  开封网站制作公司,网络用语开封是什么意思?  如何挑选高效建站主机与优质域名?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  深圳网站制作的公司有哪些,dido官方网站?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  如何零基础开发自助建站系统?完整教程解析  网站制作免费,什么网站能看正片电影?  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星如何一键生成手机站?  青岛网站建设如何选择本地服务器?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何在IIS服务器上快速部署高效网站?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何零基础在云服务器搭建WordPress站点?  代购小票制作网站有哪些,购物小票的简要说明?  广州建站公司哪家好?十大优质服务商推荐  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在云主机快速搭建网站站点?  如何在七牛云存储上搭建网站并设置自定义域名?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何通过WDCP绑定主域名及创建子域名站点?  建站之星如何取消后台验证码生成?  Android自定义listview布局实现上拉加载下拉刷新功能  python的本地网站制作,如何创建本地站点?  建站之星后台密码遗忘如何找回?  建站VPS能否同时实现高效与安全翻墙?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  建站之星好吗?新手能否轻松上手建站?  网站按钮制作软件,如何实现网页中按钮的自动点击?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何构建满足综合性能需求的优质建站方案?  网站制作员失业,怎样查看自己网站的注册者?  如何选择PHP开源工具快速搭建网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站与域名管理如何高效结合?  制作网站的公司有哪些,做一个公司网站要多少钱?  如何通过建站之星自助学习解决操作问题?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  简历在线制作网站免费,免费下载个人简历的网站是哪些?  建站之星与建站宝盒如何选择最佳方案?  建站之星安装后如何自定义网站颜色与字体? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。