带你十分钟快速构建好 SpringBoot + SSM 框架

目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐。而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了大众的青睐

而本文,我将教大家如何在 intellij idea 中快速构建好一个 Maven + Spring + SpringMVC + MyBatis + SpringBoot 的框架,做到了足够精简,让你可以立刻开始你的 web 项目

一. 创建项目

选择 Spring Initiallizr

添加最基本的几个依赖 Web,MySQL,MyBatis,其他需求可以后续再添加 ; 数据库选择了 MySQL

二. 配置数据源

数据源中存储了所有建立数据库连接的信息

1. 配置 IDEA 数据源

输入地址,端口,用户名,密码等等完成设置

2. 配置 spring 数据源

application.properties 文件添加:

spring.datasource.url = jdbc:mysql://xx.xx.xx.x:xxx/xxx?characterEncoding=utf8&allowMultiQueries=true&useSSL=false

spring.datasource.username = root

spring.datasource.password = 123456

spring.datasource.driver-class-name = com.mysql.jdbc.Driver

  • url : 数据源 url ,格式为 jdbc:mysql://Host(主机名或 IP 地址):Post(端口)/Database(数据库名称),其中 allowMultiQueries = true : 允许多条 sql 同时执行(分号分隔);useSSL : 是否进行 SSL 连接,根据实际情况选择
  • username : 用户名
  • password : 密码
  • driver-class-name : 驱动名,不同的数据库有不同的 Drivername,如 oracle 数据库的 oracle.jdbc.driver.OracleDriver,MySQL 数据库为 com.mysql.jdbc.Driver

三. Spring 注解

  • 使用 @Controller / @RestController 注解标注一个控制器,表明这个类是作为控制器的角色而存在的
  • 使用 @Service 注解标注一个业务层类
  • 使用 @Repository 注解标注一个持久层 mapper 接口
  • 使用 @Component 注解标注其他组件
  • 使用 @Configuration 注解标注配置类

四. MyBatis

整个项目的构建最主要的部分就是 springboot 和 mybatis 的整合,而 springboot 也提供了十分方便的方式。

1. xml 文件

  • 声明为映射文件
  • namespace : 指该映射文件对应的映射接口 ; 一般来说,一个 XML 映射配置文件对应一个命名空间,而这个命名空间又对应一个接 口

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.swit.dao.MyMapper">

</mapper>

2. application.properties

  • Mybatis 配置,指定了 mybatis 基础配置文件和实体类映射文件的地址

mybatis.mapperLocations = classpath:mapper/**/*.xml

mybatis.typeAliasesPackage = com.swit.model

  • 配置 typeAliasesPackage 可以使得 com.swit.model 包内的实体类可以在映射文件中使用别名,如:

<select id="getUser" parameterType="int" resultType="User">

</select>

如没有配置 typeAliasesPackage ,则需要 resultType="com.swit.model.User"

  • 如果要对 MyBatis 通过 xml 文件进行另外的配置,则添加文件路径:

mybatis.config-locations=classpath:mybatis/mybatis-config.xml

3. 添加对 mapper 类的扫描

以下两种方法二选其一

(1)可以选择在启动类添加 @MapperScan

value 为 mapper 类所在的包(注意这里是包的路径,而不是类的路径!)

@MapperScan(value = "com.swit.dao")

另外, @MapperScan 注解面向的是接口类,只要是加了注解的接口类都需要进行通过该注解来扫描

(2)可以在每个 mapper 类上添加 @mapper 注解

@Mapper

@Repository

public interface MyMapper {

}

到目前为止,你已经完成了你的项目的构建,下面我还会介绍些别的东西。

五. 其他要注意的点

1. @SpringBootApplication

  • 这个注解位于启动类
  • @SpringBootApplication 等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan, 所以启动类无需再添加这三个注解
  • @Configuration :标注一个类为配置类。
  • @EnableAutoConfiguration :开启自动配置。
  • @ComponentScan :自动收集所有的 Spring 组件

2. 部署服务器

如果你想把自己的 SpringBoot 项目部署到阿里云,腾讯云等服务器,那么你还需要加点东西。

1.如果需要通过打包的方式在web容器中进行部署,则需要继承 SpringBootServletInitializer 覆盖configure(SpringApplicationBuilder)方法

public class SpringbootApplication extends SpringBootServletInitializer {

public static void main(String[] args) {

SpringApplication.run(SpringbootApplication.class, args);

}

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

// 注意这里要指向原先用main方法执行的Application启动类

return builder.sources(SpringbootApplication.class);

}

}

2.pom 文件添加打包插件

<build>

<!--打包后的项目名,url 前缀-->

<finalName>projectName</finalName>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.1</version>

<configuration>

<!--设置编译时使用的 JDK 版本-->

<source>1.8</source>

<!--设置运行时使用的 JDK 版本-->

<target>1.8</target>

<!--设置为 true 则跳过测试-->

<skip>true</skip>

</configuration>

</plugin>

</plugins>

</build>

  1. 你很有可能还需要做个跨域处理

@Component

public class CorsFilter implements Filter {

/**

* json web token 在请求头的名字

*/

private String tokenHeader = "X_Auth_Token";

@Override

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletResponse response = (HttpServletResponse) res;

HttpServletRequest request = (HttpServletRequest) req;

String token = request.getHeader("X_Auth_Token");

System.out.println(token + "token");

String Origin = request.getHeader("Origin");

System.out.println("Origin:" + Origin);

System.out.println("tokenHeader:" + this.tokenHeader);

Logger logger = Logger.getLogger(this.getClass());

logger.info("Origin: " + Origin);

response.setHeader("Access-Control-Allow-Origin", Origin);

response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");

response.setHeader("Access-Control-Max-Age", "3600");

response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, " + this.tokenHeader);

response.setHeader("Access-Control-Allow-Credentials", "true");

chain.doFilter(req, res);

}

@Override

public void init(FilterConfig filterConfig) {

}

@Override

public void destroy() {

}

}

六. 整合其他组件

1. redis

redis 也是我们项目中经常用到的 NoSQL,经常用来做做缓存什么的。

依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

application.properties

# Redis数据库索引(默认为0)

spring.redis.database=0

# Redis服务器地址

spring.redis.host=127.0.0.1

# Redis服务器连接端口

spring.redis.port=6379

# Redis服务器连接密码(默认为空)

spring.redis.password=123456

# 连接池最大连接数(使用负值表示没有限制)

spring.redis.pool.max-active=15

# 连接池最大阻塞等待时间(使用负值表示没有限制)

spring.redis.pool.max-wait=-1

# 连接池中的最大空闲连接

spring.redis.pool.max-idle=15

# 连接池中的最小空闲连接

spring.redis.pool.min-idle=0

# 连接超时时间(毫秒)

spring.redis.timeout=0

2. Druid 数据源

针对监控而生的 DB 连接池

依赖

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.20</version>

</dependency>

application.properties

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.filters=stat

spring.datasource.maxActive=20

spring.datasource.initialSize=5

spring.datasource.maxWait=60000

spring.datasource.minIdle=1

spring.datasource.timeBetweenEvictionRunsMillis=60000

spring.datasource.minEvictableIdleTimeMillis=300000

spring.datasource.validationQuery=select ‘x‘

spring.datasource.testWhileIdle=true

spring.datasource.testOnBorrow=false

spring.datasource.testOnReturn=false

spring.datasource.poolPreparedStatements=true

spring.datasource.maxOpenPreparedStatements=20

原文地址:https://www.cnblogs.com/xyhero/p/9374932.html

时间: 2024-10-28 22:21:37

带你十分钟快速构建好 SpringBoot + SSM 框架的相关文章

教你十分钟构建好 SpringBoot + SSM 框架

目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐.而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了大众的青睐. 而本文,我将教大家如何在 intellij idea 中快速构建好一个 Maven + Spring + SpringMVC + MyBatis + SpringBoot 的框架,做到了足够精简,让你可以立刻开始你的 web 项目.一. 创建项目 选择 Spring Initialli

利用IDEA构建springboot应用-构建好SpringBoot + SSM 框架

一. 创建项目 选择 Spring Initiallizr 添加最基本的几个依赖 Web,MySQL,MyBatis,其他需求可以后续再添加 ; 数据库选择了 MySQL 二. 配置数据源 数据源中存储了所有建立数据库连接的信息 1. 配置 IDEA 数据源 输入地址,端口,用户名,密码等等完成设置 2. 配置 spring 数据源 application.properties 文件添加: spring.datasource.url = jdbc:mysql://localhost:3306/m

十分钟快速入门 Python,看完即会,不用收藏!

本文以 Eric Matthes 的<Python编程:从入门到实践>为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章. 读完本篇文章后,可对 Python 语言特性.编码风格有一定了解,并可写出简单的 Python 程序. 100?多位经验丰富的开发者参与,在 Github 上获得了近?1000?个?star?的开源项目想了解下吗?项目地址:github.com/cachecats/c- 一.安装与运行 各个系统的 Pyth

程序员带你十天快速入门Python,玩转电脑软件开发(二)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群538742639.群马上就满了,名额不多. 上节课主要讲解了以下内容: 为什么学习Pyth

程序员带你十天快速入门Python,玩转电脑软件开发(三)

声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群538742639.群马上就满了,名额不多. 这是高级程序员快速入门Python语言课程.助你快速学习Python语言.这是第三课. 程序员带你十天快速入门Python,玩转电脑软件开发(一) 程序员带你十天快速入门Python,玩转电脑软件开发(二) 因技术知识连贯性,还没有学习前两课的同学,建议点

快速构建一个 Springboot

快速构建一个 Springboot 官网:http://projects.spring.io/spring-boot/ Spring Boot可以轻松创建可以"运行"的独立的,生产级的基于Spring的应用程序.我们对Spring平台和第三方图书馆有一个看法,所以你可以从最开始的时候开始吧.大多数Spring Boot应用程序需要很少的Spring配置. 特征 创建独立的Spring应用程序 直接嵌入Tomcat,Jetty或Undertow(不需要部署WAR文件) 提供有意思的&qu

程序员带你十天快速入门Python,玩转电脑软件开发(一)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言的你.有梦想的你,立志做全栈攻城狮. 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群538742639.群马上就满了,名额不多. 目录: 为什么学习Python? Pyt

[转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!

十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for=pc关于UX测试相关的: 之前一直搞的不是很清楚 这个百家号的解释挺好的 简单转帖一下 以后仔细研究,  设计师充电站 18-07-1308:58 72DPI的图片拿去打印会糊吗?手机拍出来的照片是多少DPI?PS里显示72PPI为什么另存为JPG就变成96DPI了? 类似的问题层出不穷.本站很多篇文章都讲到

快速构建App界面的框架(●&#39;?&#39;●) -----SalutJs

前言 卤煮在公司之初接触到的是一个微信APP应用.前端技术采用的是Backbone+zepto等小型JS类库.在项目开发之初,这类中小型的项目采用这两种库可以满足基本的需求.然而,随着迭代的更新和业务的增加,成堆的代码被覆盖到项目中去了,使得这样一种技术架构方式变得异常的臃肿,很多界面变得异常的难以维护,因此卤煮打算重构公司前端架构. 卤煮的想法是:采用异步模块的加载方式,将不同微信菜单进入的界面分成若干的模块文件,这样的好处是按照需求加载界面,而且每个界面都单独成模块,便于维护和独立开发.于是