Spring Boot使Spring入门非常容易。 但是仍然有人对不使用Spring Boot并以更经典的方式引导应用程序感兴趣。 几年前,我创建了一个原型(早于Spring Boot),简化了引导Spring Web应用程序的过程。 尽管Spring Boot已经上市了一段时间,但是Spring MVC 4 Quickstart Maven Archetype在GitHub上仍然很受欢迎。 我希望最近有了一些补充,它会更好。

Java 8

我已经决定将目标平台切换为Java8。在生成的项目中还没有特定的Java 8代码,但是我相信所有新的Spring项目都应该从Java 8开始。Java 8的采用超出了预期。 看看: https : //typesafe.com/company/news/survey-of-more-than-3000-developers-reveals-java-8-adoption-ahead-of-previous-forecasts

介绍Spring IO平台

Spring IO平台将核心Spring API整合到了一个用于现代应用程序的紧密结合的平台中。 。 主要优势在于,它通过提供Spring项目的版本以及经过测试并已知可以协同工作的依赖项,简化了依赖项管理。

以前,所有依赖项都是手动指定的,解决版本冲突需要一些时间。 使用Spring IO平台,我们必须仅更改平台版本(当然还要注意平台外部的依赖性):

<dependencyManagement><dependencies><dependency><groupId>io.spring.platform</groupId><artifactId>platform-bom</artifactId><version>${io.spring.platform-version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

现在可以使用依赖项,而无需在POM中指定version

<!-- Spring -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId>
</dependency>
<!-- Security -->
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId>
</dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId>
</dependency>

Java安全性配置

当我第一次创建原型时,无法使用Java代码配置Spring Security。 但是现在是了,所以我将XML配置迁移到Java配置。

SecurityConfig现在从WebSecurityConfigurerAdapter扩展,并用@Configuration@EnableWebMvcSecurity批注标记。

安全配置详细信息

限制访问除以下以外的每个URL

XML配置:

<security:intercept-url pattern="/" access="permitAll" />
<security:intercept-url pattern="/resources/**" access="permitAll" />
<security:intercept-url pattern="/signup" access="permitAll" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />

成为:

http.authorizeRequests().antMatchers("/", "/resources/**", "/signup").permitAll().anyRequest().authenticated()

登录/注销

XML配置:

<security:form-login login-page="/signin" authentication-failure-url="/signin?error=1"/>
<security:logout logout-url="/logout" />

成为:

http.formLogin().loginPage("/signin").permitAll().failureUrl("/signin?error=1").loginProcessingUrl("/authenticate").and().logout().logoutUrl("/logout").permitAll().logoutSuccessUrl("/signin?logout");

记住账号

XML配置:

<security:remember-me services-ref="rememberMeServices" key="remember-me-key"/>

成为:

http.rememberMe().rememberMeServices(rememberMeServices()).key("remember-me-key");

CSRF已启用用于生产而已禁用以进行测试

当前默认情况下启用CSRF,因此不需要其他配置。 但是在进行集成测试时,我想确保CSRF被禁用。 我找不到执行此操作的好方法。 我从传递给CsrfConfigurer CSRF保护匹配器开始,但是最后得到了很多我不希望在SecurityConfiguration拥有的代码。 我最终得到了一个NoCsrfSecurityConfig ,它从原始SecurityConfig扩展并禁用了CSRF:

@Configuration
public class NoCsrfSecurityConfig extends SecurityConfig {@Overrideprotected void configure(HttpSecurity http) throws Exception {super.configure(http);http.csrf().disable();}
}

连接池

HikariCP现在用作生成的应用程序中的默认连接池。 使用默认配置:

@Bean
public DataSource configureDataSource() {HikariConfig config = new HikariConfig();config.setDriverClassName(driver);config.setJdbcUrl(url);config.setUsername(username);config.setPassword(password);config.addDataSourceProperty("cachePrepStmts", "true");config.addDataSourceProperty("prepStmtCacheSize", "250");config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");config.addDataSourceProperty("useServerPrepStmts", "true");return new HikariDataSource(config);
}

还有更多

Spring MVC 4快速入门Maven原型还远远没有完成。 由于Spring平台涉及原型,因此必须进行相应调整。 我很期待听到可以做些什么来使其成为一个更好的项目。 如果有想法或建议,请在GitHub上发表评论或创建问题。

参考文献

  • Spring MVC 4快速入门Maven原型

翻译自: https://www.javacodegeeks.com/2014/12/spring-mvc-4-quickstart-maven-archetype-improved.html

Spring MVC 4快速入门Maven原型已改进相关推荐

  1. Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能

    对于所有有兴趣在没有Spring Boot的情况下快速引导Spring 4应用程序的开发人员,请检查刚刚更新的我的Spring MVC 4 Quickstart Maven原型. 原型已经将Java ...

  2. Spring MVC 教程,快速入门,深入分析

    目录  转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...

  3. Spring MVC 教程,快速入门,深入分析【转】

    2019独角兽企业重金招聘Python工程师标准>>> 转自:赵磊 地址:http://elf8848.iteye.com 目录  一.前言 二.spring mvc 核心类与接口 ...

  4. Spring MVC 教程,快速入门,深入分析——多视图控制器

    十八.多视图控制器 当有jsp,flt (模板)等多种页面生成展示方式时,spring默认使用的是"视图解析器链". 真是一个链,所以性能不好,spring会在"视图解析 ...

  5. 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)

    如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程. 不太复杂. 只是一个演练. 生成的应用程序将提供简单的 ...

  6. SpringMVC:学习笔记(1)——理解MVC及快速入门

    SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...

  7. Spring学习(1)——快速入门

    Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...

  8. Spring Boot的快速入门

    Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...

  9. Spring Boot【快速入门】

    Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...

最新文章

  1. 奥比中光Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题
  2. php可以做ios程序吗,php写的可以在本机发送iOS push程序
  3. java 线程包_Java 多线程——工具包
  4. 大数据学习笔记04:单机模式使用ZooKeeper
  5. Spring Boot 第一个程序
  6. li鼠标悬浮手势样式
  7. IT人母亲的美国之行(8)
  8. C语言实现贪吃蛇小游戏
  9. 如何认识会计科目,看懂财务报表?
  10. xp系统无法访问计算机,xp系统Workgroup无法访问怎么解决
  11. vmware虚拟机连接服务器超时,vmware连接远程服务器超时
  12. IDE——jupyter的安装与卸载
  13. @18. 自幂数、水仙花数、四叶玫瑰数等等是什么?
  14. 王者荣耀 微信登录 服务器找不到,王者荣耀微信登录失败怎么办 王者荣耀微信登录失败解决办法...
  15. Vue.js面试题整理
  16. 系统性能优化策略 -- 持续优化更新
  17. 关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。
  18. 完美解决前端无法上传大文件方法
  19. Gradient Accumulation 梯度累加 (Pytorch)
  20. 【展馆设计】互动多媒体投影有哪些实用价值

热门文章

  1. java面向对象高级分层实例_数据库操作类
  2. RBAC(基于角色的权限访问控制)
  3. linux软件可以在所有发行版运行吗,Linux通用的跨发行版的3大软件包管理器
  4. (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询
  5. ES6 Map对象的使用
  6. MySQL 对于千万级的大表要怎么优化?
  7. quarkus_使用Quarkus调试容器中的系统测试(视频)
  8. java oca_OCA第6部分中的Java难题
  9. djl和ljl_使用Spring Boot和DJL进行深度学习
  10. 单元测试junit参数_使用Junit参数在更少的时间内编写更好的单元测试