栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring MVC完全注解方式配置web项目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring MVC完全注解方式配置web项目

在servlet 3.0 开始web项目可以完全不需要web.xml配置文件了,所以本文的配置只在支持servlet 3.0及以上的web容器中有效

使用的是spring mvc (4.3.2.RELEASE) + thymeleaf(3.0.2.RELEASE), 持久层使用的 spring的 JdbcTemplate, PS:推荐一个很好用的对JdbcTemplate封装的框架:https://github.com/selfly/dexcoder-assistant  。 下面开始具体的配置:

配置spring mvc DispatcherServlet
DispatcherServlet 是spring mvc的核心, Spring 提供了一个快速配置DispatcherServlet的类 AbstractAnnotationConfigDispatcherServletInitializer,具体代码如下:

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

getRootConfigClasses() 获取配置类,我理解的相当于 applicationContext.xml 创建的上下文

getServletConfigClasses()获取配置类,相当于 mvc-servlet.xml 创建的上下文

此类上不需要任何注解

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;


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

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

 
 @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, "
@Configuration
@PropertySource("classpath:config.properties") // 导入属性文件
@EnableAspectJAutoProxy // 相当于 xml 中的 
@EnableTransactionManagement // 开启注解事务
@ComponentScan(basePackages = {"com.liulu.lit", "com.liulu.bank"}, excludeFilters = @ComponentScan.Filter(classes = Controller.class ))
public class RootConfig {

 // 上面导入的属性文件中的属性会 注入到 Environment 中
 @Resource
 private Environment env;

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

 
 @Bean
 public PlatformTransactionManager transactionManager(DataSource dataSource) {
  return new DataSourceTransactionManager(dataSource);
 }

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


}

config.properties 文件在 resources 目录下

#数据库配置
db.url=jdbc:mysql://192.168.182.135:3306/bank
db.driver=com.mysql.jdbc.Driver
db.user=root
db.password=123456

#数据库连接池配置
#连接池中保留的最小连接数
pool.minPoolSize=5
#连接池中保留的最大连接数
pool.maxPoolSize=30
#获取连接超时时间
pool.checkoutTimeout=1000


配置 servlet.xml, 由WebConfig类实现
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;


@Configuration
@EnableWebMvc // 启用 SpringMVC ,相当于 xml中的 
@ComponentScan(basePackages = {"com.liulu.bank.controller", "com.liulu.lit"},
  includeFilters = @ComponentScan.Filter(classes = Controller.class),
  useDefaultFilters = false)
public class WebConfig extends WebMvcConfigurerAdapter {

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

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

}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/148904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号