自我救赎 → 利用 IDEA 和 Spring Boot 搭建 SSM
前言
开心一刻
儿子读高中放学回来了,一向不管他学习的我突然来了兴趣,想看看他的学习他的状况,抄起他的数学习题看了起来,当看到 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 = 10! 我当时火冒三丈,一巴掌就呼过去了,怒吼道:你这是怎么读的,1乘以2乘以3乘以...10怎么等于10! 旁边的媳妇一平底锅甩我脸上:不等于10的阶乘,那等于多少?我:这不是感叹号吗?
写作背景
关于 ssm 的基础篇,我一共写了三篇博客:
利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)
搭建 ssm 比较简单,eclipse 配置好 maven,工程中配置好相关配置文件即可;但是此种方式已过时,包括eclipse、spring4.0.2、ssm的搭建方式(pom中配置的依赖太多),不再推荐此种方式。
关于利用maven搭建ssm的博客,我们一起来探讨下问的最多的问题
根据大家搭建 ssm 过程中遇到的问题,总结出了此篇,主要是针对数据绑定的问题进行了详细的说明;内容不过期,推荐仔细看看。
由问题:Spring mvc 是何时、何地、如何将Model中的属性绑定到哪个作用域 引发的 Spring MVC 的工作原理的探索,随着 Spring 版本的变迁,Spring MVC 或许会有少许的改动,但其核心不会变,推荐仔细看看。
近来,还是陆陆续续收到一些刚入门的小伙伴的求助,利用maven/eclipse搭建ssm还是会出现各种各样的问题,关键是我在帮忙解决的过程中竟然发现我不太会用 eclipse 了, 而且 spring 的版本还是 4,我就问他们了:你们怎么还在用 eclipse,spring的版本为什么那么低? 结果我得到一个统一的回答:我是参考的你的博客搭建的。
此刻我意识到了这是我的问题:随着时间的流逝,我没有及时的更新我的博客 → 利用maven/eclipse搭建ssm(spring+spring mvc+mybatis),导致很多刚入门的小伙伴看到的是过时的内容,误人子弟实乃大罪过!所以我赶紧写了此篇,指正当前正确的方向。一段时间后,此篇博文涉将的内容也会过时,所以大家最好能自己抓住当下主流的内容。
目前公司用的是 idea + spring boot 实现的工程搭建,也是当下最流行的方式,下面我也就演示下如何利用 idea 和 spring boot 搭建 ssm工程。
IDEA
IDEA 全称 IntelliJ IDEA,具体它是什么,有什么用,怎么用 等等关于 IDEA 的内容,大家自行去查阅,我就不做啰嗦了。可参考:IDEA 使用教程(持续更新,19年6月14号更新)
推荐大家用最新的 IDEA 版本,有能力的请支持正版
只强调一点:maven 设置
maven的更多内容大家自行去查阅资料,maven 的安装可参考利用maven/eclipse搭建ssm(spring+spring mvc+mybatis),推荐用最新的;安装好maven之后,推荐配置上阿里的镜像,在 maven 的配置文件 settings.xml 中的 mirrors 节点下新增如下 mirror 节点
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
maven安装好后,需要在 idea 中配置好 maven,配置过程很简单,如下图所示
这样 idea 集成 maven 就成功了
Spring Boot
关于 Spring Boot 的详细信息,大家可以去它的官方文档看,也可以看园子内大佬的博客,推荐:Spring boot 入门篇
Spring Boot 是由 Pivotal 团队提供的全新框架,但不是 Spring 的替代品,而是 Spring 的衍生品,目的是用来简化新 Spring 应用的初始搭建以及开发过程;它采用了约定大于配置的做法,默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架,同时 Spring Boot 采用 Starters 的方式简化了工程的 maven 依赖配置。
目前 Spring Boot 的最新的发布版本是 2.1.6 ,我们不采用它,我们用 2.1.0 这个发布了有一段时间的版本来演示
SSM 搭建
我们可以直接下载官网的样例,然后导入到 idea,这是一种方式,但我还是想给大家演示一个完整的从无到有的过程
工程搭建
方式很多种,我独爱白的像一张纸一样的初始配置
配置 maven 依赖
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.lee</groupId>
<artifactId>ssm</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<encoding>UTF-8</encoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<pagehelper.version>1.2.5</pagehelper.version>
<druid.version>1.1.10</druid.version>
</properties> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent> <dependencies> <!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> <!-- mybatis相关 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
工程配置
application.yml
server:
port: 8888
servlet:
context-path: /ssm
spring:
#连接池配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
initial-size: 1 #连接池初始大小
max-active: 20 #连接池中最大的活跃连接数
min-idle: 1 #连接池中最小的活跃连接数
max-wait: 60000 #配置获取连接等待超时的时间
pool-prepared-statements: true #打开PSCache,并且指定每个连接上PSCache的大小
max-pool-prepared-statement-per-connection-size: 20
validation-query: SELECT 1 FROM DUAL
validation-query-timeout: 30000
test-on-borrow: false #是否在获得连接后检测其可用性
test-on-return: false #是否在连接放回连接池后检测其可用性
test-while-idle: true #是否在连接空闲一段时间后检测其可用性
#mybatis配置
mybatis:
type-aliases-package: com.entity
#config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mapper/*.xml
# pagehelper配置
pagehelper:
helperDialect: mysql
#分页合理化,pageNum<=0则查询第一页的记录;pageNum大于总页数,则查询最后一页的记录
reasonable: true
supportMethodsArguments: true
params: count=countSql
完整工程
java文件夹下的内容,包括 controller、service、mapper、dao 以及 SsmApplication就不逐一展示了,更多详细代码请看:ssm
实现效果
总结
不是说过时的东西不能用,而是不推荐用,效率是一方面,安全也是一方面,保不准过时的内容会在后续哪个版本就直接剔除了,那就是真的不能用了;当下 java web 的热门开发工具就是 IDEA(不仅仅只是java哦),热门框架就是 Spring Boot,当下流行不保证一直流行,我们需要保持一颗学习的心,多关注时下的热门技术。
参考
SpringBoot入门教程(一)详解intellij idea搭建SpringBoot
自我救赎 → 利用 IDEA 和 Spring Boot 搭建 SSM的更多相关文章
- Set up HTTP/2 server with Spring Boot 【基于Spring boot搭建http2.0服务器】
1. Server side With spring boot, we can set up a http server easily. Restcontroller make it easier t ...
- maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...
- Spring Boot 搭建TCP Server
本示例首选介绍Java原生API实现BIO通信,然后进阶实现NIO通信,最后利用Netty实现NIO通信及Netty主要模块组件介绍. Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可 ...
- Spring Boot(一):如何使用Spring Boot搭建一个Web应用
Spring Boot Spring Boot 是Spring团队旗下的一款Web 应用框架 其优势可以更快速的搭建一个Web应用 从根本上上来讲 Spring Boot并不是什么新的框架技术 而是在 ...
- 记录一次Spring boot 搭建框架连接Mysql数据库注解事务不回滚的故障
搭建了一个新框架,使用了spring boot 替换以简化原来繁杂的spring配置,使用Spring注解管理事务,持久层使用mybatis. 连接mysql数据库完成项目的过程中发现不支持事务,因为 ...
- 使用Spring Boot搭建应用开发框架(一) —— 基础架构
Spring的简史 第一阶段:XML配置,在Spring1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml配置文件分放到不同的配置文件里,那时候需要频繁的在 ...
- spring boot 搭建web项目常见五种返回形式
在web项目中一般常见的五种返回形式: 返回页面,使用模板引擎,spring boot推荐使用thymeleaf,类似的还有freemarker等. 返回字符串(json),一般用于完全的前后端分离开 ...
- Spring Boot搭建Web项目常用功能
搭建WEB项目过程中,哪些点需要注意: 1.技术选型: 前端:freemarker.vue 后端:spring boot.spring mvc 2.如何包装返回统一结构结果数据? 首先要弄清楚为什么要 ...
- 如何基于Spring Boot搭建一个完整的项目
前言 使用Spring Boot做后台项目开发也快半年了,由于之前有过基于Spring开发的项目经验,相比之下觉得Spring Boot就是天堂,开箱即用来形容是绝不为过的.在没有接触Spring B ...
随机推荐
- 多线程Parallel和Task
不管是Parallel还是Task,最里面都是线程池(里面是线程)当开启多个任务后,系统会根据当前的线程池的资源进行分配,任务则进行等待Parallel可以对系统的CPU进行设置,可以最大程度上榨干系 ...
- ASP CRUD
//UserInfoList.html <!DOCTYPE html> <html><head><meta http-equiv="Content- ...
- 加快QT工程编译速度(还可给Qt for Android设置)
一.多核编译 环境:win10, Qt 5.4.1,编译器mingw32 项目: Qt for Android Qt Creator 在编译android项目时不支持预编译,默认cpu单核编译,工程稍 ...
- Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化
原文:Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化 [函数名称] P分位法图像二值化 [算法说明] 所谓P分位法图像分割,就是在知道图像中目标所占的比率Rat ...
- 指定Qt程序运行的style,比如fusion(以前没见过QStyleFactory)
转载请注明文章:指定Qt程序运行的style,比如fusion 出处:多客博图 代码很简单,如下: #include <QtWidgets/QApplication> #include ...
- .Net DateTime跨时区相关问题
项目:.Net CS结构,WCF通信,MySql存储. 场景:客户端(UTC+07:00)获取本地时间(DateTime对象)2017-01-17 15:20:12,通过WCF(http)传输至服务端 ...
- Android零基础入门第55节:ImageSwitcher和TextSwitcher使用
原文:Android零基础入门第55节:ImageSwitcher和TextSwitcher使用 上一期我们了解了ViewAnimator组件和ViewSwitcher组件的使用,你都掌握了吗?本期一 ...
- 管道通信实例(A程序作为服务器,不断从B程序接收数据,并发送到C程序中)
A程序作为服务器,不断从B程序接收数据,并发送到C程序中:#include <stdio.h>#include <conio.h> #include <tchar.h&g ...
- C#字符串类型
C#字符串类型(string)是一种引用类型,是System.String的别名,表示Unicode字符串. 两种表示方法: 1.“C#” 直接用双引号括起来. 2.使用@,@“c:\test”,可以 ...
- BI-学习之 新概念介绍
什么是统一维度模型 层次结构.级别.成员和度量值 什么是MDX MDX与SQL的区别 什么是数据仓库 什么是OLAP数据分析引擎 BI企业级解决方案 什么是统一维度模型 维度(dimension)是描 ...