前言
本篇文章为技术储备,商城项目中SpringBoot的学习
SSM整合步骤多、配置繁琐,项⽬进⾏服务器部署步骤繁琐,SpringBoot可以简化整合过程中复杂配置的工具框架
SpringBoot优点:
- 能够快速的搭建项⽬
- 对主流的开发框架都提供了⽆配置集成(SpringBoot内置了配置)
- 项⽬可以独⽴运⾏、⽆需单独配置Servlet容器(内置了Tomcat)
- 极⼤提⾼了开发、部署效率
- 提供了运⾏时监控系统(⽇志等)
- 与云原⽣有天然的集成
SpringBoot缺点:
- 由于配置都是内置的,报错时定位⽐较困难
- 版本迭代速度⽐较快、有些版本改动还是⽐较⼤(增加学习成本)
一、SpringBoot入门
1.项目创建
SpringBoot应用需要基于远程服务器创建
远程服务器:
- Spring官⽅:https://start.spring.io
- 阿里:https://start.aliyun.com
2.整合Mybatis
springboot帮我们完成通用配置,但数据库密码等还需手动配置
1、在springboot主配置文件application.yml
⽂件中配置数据源及路径
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: admin123
mybatis:
mapper-locations: classpath:mappers/*Mapper.xml
type-aliases-package: com.qfedu.springboot.demo.entity
server:
port: 80
2、在SpringBoot启动类通过 @MapperScan 注解指定DAO接⼝的包名
@SpringBootApplication
@MapperScan("com.qfedu.springboot.demo.dao")
public class SpringbootDemo1Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemo1Application.class, args);
}
}
3.项目启动
SpringBoot应⽤⾃带Servlet容器—Tomcat,因此⽆需进⾏额外的服务器配置,运⾏启动类即可启动⼀个SpringBoot应⽤
二、SpringBoot原理
2.1starter(依赖+配置)
SpringBoot为我们提供了简化企业级开发绝⼤多数场景的⽀持(提供了多个starter), 我们在进⾏项⽬开发的过程中只需引⼊对应的starter(创建SpringBoot应⽤时可选 择),相关的依赖和配置就会被内置到项⽬中(消除⼈⼯配置)
一、依赖默认
基于Spring官方服务器创建的SpringBoot应用
1、使用了maven中的继承对主流的框架版本进行了配置
<!-- SpringBoot应⽤中的pom 继承了spring-boot-starter-parent.pom -->
<!-- spring-boot-starter-parent.pom⼜继承了spring-boot-dependencies.pom-->
<!-- 在spring-boot-dependencies.pom已经对主流的框架的版本进⾏了声明 -->
开发中使用的依赖如果不指定版本就会使用默认的主流版本,如果指定就会使用指定的版本
2、 引入了maven对springboot支持的插件spring-boot
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
基于aliyun服务器创建的SpringBoot应用
SpringBoot引⽤的pom没有继承spring-boot-starter-parent.pom,因此版本需要
在当前pom中进⾏定义
二、SpringBoot自动配置
⼀个starter不仅包含依赖,还包含相应的配置,starter中包含的配置都是通过Java类实现的——Java配置⽅式
- 对基础配置、引⽤的第三⽅依赖中的配置使⽤xml完成:例如数据源配置
- 业务开发使⽤注解:例如controller、service
1.xml配置
<!--applicationContext.xml-->
<bean id="stu" class="com.qfedu.beans.Student"></bean>
<bean id="date" class="java.util.Date"></bean>
xml配置对应的类交给spring管理,它既可以做配置自定义类,也可以配置第三方类
2.注解配置
@Component
public class Student{
}
@Component 表示这是一个交给spring管理的类,它只能做配置自定义类.@Controller/@Service/@Repository都是一个作用,只不过对表现层、业务层、数据层进行了区分
@ComponentScan 扫描Bean,范围为当前类所在的包
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
//使代码看起来更加简洁
3.Java配置方式
@Configuration
public class SpringConfig{
@Bean
public Date getDate(){
return new Date();
}
}
@Configuration 表示这个是Java配置类,该类里的方法加@Bean返回配置的类交给spring管理,它既可以做配置自定义类,也可以配置第三方类,但主要用于配置第三方类
SpringBoot自动配置的实现
//SpringBoot的启动类
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
SpringApplication.run
方法中的SpringApplicationRunListeners
监听到run调用就会调用getSpringFactoriesInstances
方法,而该方法则会调用SpringFactoriesLoader.loadFactoryNames
接着调loadSpringFactories
,该方法扫描所有依赖中的META-INF
目录下的spring.factories
文件获得所有自动配置类的路径,依次扫描并加载这些配置类,若果满足自动配置类的初始化条件就初始化,否则跳过。
自定义Banner
在resoueces下新建Banner.txt放入想要的即可(自定义图案网页:http://patorjk.com/software/taag/)
// ┏┓ ┏┓
// ┏┛┻━━━┛┻┓
// ┃ ┃
// ┃ ━ ┃
// ┃ ┳┛ ┗┳ ┃
// ┃ ┃
// ┃ ┻ ┃
// ┃ ┃
// ┗━┓ ┏━┛Codes are far away from bugs with the animal protecting
// ┃ ┃ 神兽保佑,代码无bug
// ┃ ┃
// ┃ ┗━━━┓
// ┃ ┣┓
// ┃ ┏┛
// ┗┓┓┏━┳┓┏┛
// ┃┫┫ ┃┫┫
// ┗┻┛ ┗┻┛
三、基于SpringBoot的SSM整合
1、创建项目
创建项⽬时添加依赖
- lombok
- spring web
- mysql driver
- mybatis framework
2、配置mybatis
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
username: root
password: admin123
mybatis:
type-aliases-package: com.qfedu.springboot.ssm.beans
mapper-locations: classpath:mappers/*Mapper.xml
3、启动类配置dao扫描
@MapperScan("com.qfedu.springboot.ssm.dao")
4、整合Durid连接池
在SpringBoot中整合MyBatis的时候,默认集成了Hikari连接池,Hikari的效率⽐Druid 要⾼,但是得益于Druid提供了⽐较便捷的监控系统在企业开发中,druid使⽤还是最多的。
添加starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
配置连接池数据源
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
username: root
password: admin123
initial-size: 1
min-idle: 1
max-active: 20
到这里其实应用已经可以启动了,但是还是要根据具体的业务场景设计数据库表,在根据表设计实体类,再根据实体类的操作建Dao接口,再去定义业务层接口然后实现,最后设计表现层controller,这里做返回结果的封装,返回状态码的定义(和前端约定),和异常和拦截还有日志
四、Thymeleaf
一、Thymeleaf简介
- JSP 必须依赖Tomcat运⾏,不能直接运⾏在浏览器中
- HTML可以直接运⾏在浏览器中,但是不能接收控制器传递的数据
- Thymeleaf是⼀种既保留了HTML的后缀能够直接在浏览器运⾏的能⼒、⼜实现了JSP显示动态数据的功能——静能查看⻚⾯效果、动则可以显示数据
二、Thymeleaf使用
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
开始使用欸,之后要分离的呀,不管了,要用再回来看
五、SpringBoot的热部署配置
idea的设置里面去做一下就好了,到时候再回来看吧