欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring MVC完全注解方式配置web項(xiàng)目

 更新時(shí)間:2016年10月17日 11:35:06   作者:Lius`  
這篇文章主要為大家詳細(xì)介紹了Spring MVC完全注解方式配置web項(xiàng)目的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在servlet 3.0 開始web項(xiàng)目可以完全不需要web.xml配置文件了,所以本文的配置只在支持servlet 3.0及以上的web容器中有效

使用的是spring mvc (4.3.2.RELEASE) + thymeleaf(3.0.2.RELEASE), 持久層使用的 spring的 JdbcTemplate, PS:推薦一個(gè)很好用的對JdbcTemplate封裝的框架:https://github.com/selfly/dexcoder-assistant  。 下面開始具體的配置:

配置spring mvc DispatcherServlet
DispatcherServlet 是spring mvc的核心, Spring 提供了一個(gè)快速配置DispatcherServlet的類 AbstractAnnotationConfigDispatcherServletInitializer,具體代碼如下:

其中 onStartup()  是 WebApplicationInitializer 接口中的方法,用戶配置其他的 filter 和 listener

getRootConfigClasses() 獲取配置類,我理解的相當(dāng)于 applicationContext.xml 創(chuàng)建的上下文

getServletConfigClasses()獲取配置類,相當(dāng)于 mvc-servlet.xml 創(chuàng)建的上下文

此類上不需要任何注解

package com.liulu.bank.config;

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

import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import java.nio.charset.StandardCharsets;

/**
 * User : liulu
 * Date : 2016-10-7 15:12
 */
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer implements WebApplicationInitializer {

 @Override
 protected Class<?>[] getRootConfigClasses() {
  return new Class<?>[]{RootConfig.class};
 }

 @Override
 protected Class<?>[] getServletConfigClasses() {
  return new Class<?>[]{WebConfig.class};
 }

 /**
  * 配置DispatcherServlet 匹配的路徑
  * @return
  */
 @Override
 protected String[] getServletMappings() {
  return new String[]{"/"};
 }

 /**
  * 配置其他的 servlet 和 filter
  *
  * @param servletContext
  * @throws ServletException
  */
 @Override
 public void onStartup(ServletContext servletContext) throws ServletException {
  FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
  encodingFilter.setInitParameter("encoding", String.valueOf(StandardCharsets.UTF_8));
  encodingFilter.setInitParameter("forceEncoding", "true");
  encodingFilter.addMappingForUrlPatterns(null, false, "/*");
 }
}

配置 applicationContext.xml,由RootConfig類實(shí)現(xiàn)

package com.liulu.bank.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;

/**
 * User : liulu
 * Date : 2016-10-7 15:36
 */
@Configuration
@PropertySource("classpath:config.properties") // 導(dǎo)入屬性文件
@EnableAspectJAutoProxy // 相當(dāng)于 xml 中的 <aop:aspectj-autoproxy/>
@EnableTransactionManagement // 開啟注解事務(wù)
@ComponentScan(basePackages = {"com.liulu.lit", "com.liulu.bank"}, excludeFilters = @ComponentScan.Filter(classes = Controller.class ))
public class RootConfig {

 // 上面導(dǎo)入的屬性文件中的屬性會(huì) 注入到 Environment 中
 @Resource
 private Environment env;

 /**
  * 配置數(shù)據(jù)庫連接池 c3p0,
  * @return
  * @throws PropertyVetoException
  */
 @Bean
 public DataSource dataSource() throws PropertyVetoException {
  ComboPooledDataSource dataSource = new ComboPooledDataSource();
  dataSource.setJdbcUrl(env.getProperty("db.url"));
  dataSource.setDriverClass(env.getProperty("db.driver"));
  dataSource.setUser(env.getProperty("db.user"));
  dataSource.setPassword(env.getProperty("db.password"));
  dataSource.setMinPoolSize(Integer.valueOf(env.getProperty("pool.minPoolSize")));
  dataSource.setMaxPoolSize(Integer.valueOf(env.getProperty("pool.maxPoolSize")));
  dataSource.setAutoCommitOnClose(false);
  dataSource.setCheckoutTimeout(Integer.valueOf(env.getProperty("pool.checkoutTimeout")));
  dataSource.setAcquireRetryAttempts(2);
  return dataSource;
 }

 /**
  * 配置事物管理器
  * @param dataSource
  * @return
  */
 @Bean
 public PlatformTransactionManager transactionManager(DataSource dataSource) {
  return new DataSourceTransactionManager(dataSource);
 }

 @Bean
 public JdbcTemplate jdbcTemplate (DataSource dataSource) {
  return new JdbcTemplate(dataSource);
 }


}

config.properties 文件在 resources 目錄下

#數(shù)據(jù)庫配置
db.url=jdbc:mysql://192.168.182.135:3306/bank
db.driver=com.mysql.jdbc.Driver
db.user=root
db.password=123456

#數(shù)據(jù)庫連接池配置
#連接池中保留的最小連接數(shù)
pool.minPoolSize=5
#連接池中保留的最大連接數(shù)
pool.maxPoolSize=30
#獲取連接超時(shí)時(shí)間
pool.checkoutTimeout=1000


配置 servlet.xml, 由WebConfig類實(shí)現(xiàn)
Thymeleaf  模板配置也在下面

package com.liulu.bank.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;

import java.nio.charset.StandardCharsets;

/**
 * User : liulu
 * Date : 2016-10-7 15:16
 */
@Configuration
@EnableWebMvc // 啟用 SpringMVC ,相當(dāng)于 xml中的 <mvc:annotation-driven/>
@ComponentScan(basePackages = {"com.liulu.bank.controller", "com.liulu.lit"},
  includeFilters = @ComponentScan.Filter(classes = Controller.class),
  useDefaultFilters = false)
public class WebConfig extends WebMvcConfigurerAdapter {

 /**
  * 設(shè)置由 web容器處理靜態(tài)資源 ,相當(dāng)于 xml中的<mvc:default-servlet-handler/>
  */
 @Override
 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
  configurer.enable();
 }

 /**
  * 下面三個(gè)bean 配置 Thymeleaf 模板
  * @return
  */
 @Bean
 public SpringResourceTemplateResolver templateResolver() {
  SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
  templateResolver.setPrefix("/WEB-INF/templates/");
  templateResolver.setSuffix(".html");
  templateResolver.setTemplateMode(TemplateMode.HTML);
  templateResolver.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8));
  return templateResolver;
 }

 @Bean
 public TemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
  SpringTemplateEngine templateEngine = new SpringTemplateEngine();
  templateEngine.setTemplateResolver(templateResolver);
  return templateEngine;
 }

 @Bean
 public ViewResolver viewResolver(TemplateEngine templateEngine) {
  ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
  viewResolver.setTemplateEngine(templateEngine);
  viewResolver.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8));
  return viewResolver;
 }

}

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

相關(guān)文章

  • mybatis-generator自動(dòng)生成dao、mapping、bean配置操作

    mybatis-generator自動(dòng)生成dao、mapping、bean配置操作

    這篇文章主要介紹了mybatis-generator自動(dòng)生成dao、mapping、bean配置操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java實(shí)現(xiàn)簡單的貪吃蛇游戲

    Java實(shí)現(xiàn)簡單的貪吃蛇游戲

    這篇文章主要介紹了Java實(shí)現(xiàn)簡單的貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 關(guān)于springboot中對sqlSessionFactoryBean的自定義

    關(guān)于springboot中對sqlSessionFactoryBean的自定義

    這篇文章主要介紹了springboot中對sqlSessionFactoryBean的自定義方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java開發(fā)SpringBoot參數(shù)校驗(yàn)過程示例教程

    java開發(fā)SpringBoot參數(shù)校驗(yàn)過程示例教程

    這篇文章主要為大家介紹了SpringBoot如何進(jìn)行參數(shù)校驗(yàn)的過程示例詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Java實(shí)現(xiàn)銀行ATM系統(tǒng)

    Java實(shí)現(xiàn)銀行ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Hutool開發(fā)MapUtil工具類使用示例

    Hutool開發(fā)MapUtil工具類使用示例

    這篇文章主要為大家介紹了Hutool開發(fā)MapUtil工具類使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • springboot如何獲取yml里面的屬性值

    springboot如何獲取yml里面的屬性值

    這篇文章主要介紹了springboot如何獲取yml里面的屬性值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java實(shí)現(xiàn)俄羅斯方塊的源碼分享

    Java實(shí)現(xiàn)俄羅斯方塊的源碼分享

    俄羅斯方塊是一個(gè)最初由阿列克謝帕吉特諾夫在蘇聯(lián)設(shè)計(jì)和編程的益智類視頻游戲。本文將利用Java語言實(shí)現(xiàn)這一經(jīng)典的小游戲,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • Java+Selenium設(shè)置元素等待的方法詳解

    Java+Selenium設(shè)置元素等待的方法詳解

    本文主要介紹如何使用java代碼利用Selenium操作瀏覽器,某些網(wǎng)頁元素加載慢,如何操作元素就會(huì)把找不到元素的異常,此時(shí)需要設(shè)置元素等待,等待元素加載完,再操作,感興趣的可以了解一下
    2023-01-01
  • Spring?Security用戶定義?

    Spring?Security用戶定義?

    這篇文章主要介紹了Spring?Security用戶定義,大家都知道?Spring?Security的用戶定義有很多方式,其實(shí)主要有兩種,基于內(nèi)存的和基于數(shù)據(jù)庫的,下面我給大家簡單介紹一下這兩種方式,需要的朋友可以參考下
    2022-02-02

最新評論