" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Spring MVC4 純注解配置教程

 更新時間:2017年04月28日 14:28:14   作者:csonezp  
本篇文章主要介紹了Spring MVC4 純注解配置教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

閱讀本文需要又一定的sping基礎(chǔ),最起碼要成功的運行過一個SpringMvc項目。

在傳統(tǒng)的Spring項目中,我們要寫一堆的XML文件。而這些XML文件格式要求又很嚴格,很不便于開發(fā)。而網(wǎng)上所謂的0配置,并不是純粹的0配置,還是要寫一些xml配置,只是用了幾個@Service,@Controller注解而已。

在這里,我講介紹一種新的配置方式,一行XML代碼都不需要,什么web.xml,Application-context.xml,Beans.xml。

首先建立一個Maven項目,Packageing方式為war,項目結(jié)構(gòu)為標準Maven WebApp結(jié)構(gòu)。

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配置了。按傳統(tǒng)方式來的話,首先要去web.xml寫一堆配置,然后建立個管理beab的Beans.xml,管理spring mvc 的xml,再寫一坨一坨Bean。就是先進一點的(也就是很多人說的0配置),也就是自己的業(yè)務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;
  }

  /**
   * 配置數(shù)據(jù)源
   * @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的視圖解析器,第二個則是配置了一個數(shù)據(jù)源。這些都可以對應到XML文件里面去的。找一個傳統(tǒng)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里配置的那個數(shù)據(jù)源

@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;
    }
  }


}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringCloud使用Feign文件上傳、下載

    SpringCloud使用Feign文件上傳、下載

    這篇文章主要為大家詳細介紹了SpringCloud使用Feign文件上傳、下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • spring的@Transactional注解用法解讀

    spring的@Transactional注解用法解讀

    這篇文章主要介紹了spring的@Transactional注解用法解讀,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題

    如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題

    這篇文章主要介紹了如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Spring RestTemplate的使用與踩坑

    Spring RestTemplate的使用與踩坑

    RestTemplate是一個執(zhí)行HTTP請求的同步阻塞式工具類,它僅僅只是在HTTP客戶端庫基礎(chǔ)上,封裝了更加簡單易用的模板方法API,方便程序員利用已提供的模板方法發(fā)起網(wǎng)絡請求和處理,能很大程度上提升我們的開發(fā)效率
    2023-02-02
  • kafka監(jiān)聽問題的解決和剖析

    kafka監(jiān)聽問題的解決和剖析

    這篇文章主要給大家介紹了關(guān)于kafka監(jiān)聽問題的解決和剖析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 在Java SE上使用Headless模式的超級指南

    在Java SE上使用Headless模式的超級指南

    這篇文章主要介紹了在Java SE上使用Headless模式的超級指南,文中介紹了Headless模式實際使用的各種技巧,極力推薦!需要的朋友可以參考下
    2015-07-07
  • SpringBoot中實現(xiàn)加載遠程配置的代碼示例

    SpringBoot中實現(xiàn)加載遠程配置的代碼示例

    本文章將通過結(jié)合consul config來講解在springboot中如何加載遠程配置:通過consul config加載consul server中存儲的配置,需要的朋友可以參考下
    2023-06-06
  • SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫

    SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫

    這篇文章主要介紹了SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • java防反編譯最簡單的技巧分享

    java防反編譯最簡單的技巧分享

    這篇文章主要給大家分享了關(guān)于java防反編譯最簡單的技巧,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-09-09
  • springboot @ConfigurationProperties和@PropertySource的區(qū)別

    springboot @ConfigurationProperties和@PropertySource的區(qū)別

    這篇文章主要介紹了springboot @ConfigurationProperties和@PropertySource的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論