为什么要用SpringBoot
百度的资料都是说ssm太臃肿,配置太多,需要把ssm拆分成好几个springboot分布式,直到看了springcloud后才知道,把ssm拆成好几个ssm也一样,ssm和springboot根本没有区别,区别就在于springboot可以配合springcloud做微服务,具体查看看完这个再去看springcloud
新建一个SpringBoot
- JDK8.0以上
- 打开IDEA,File,new,Project,Spring Initializr,next
- 把type改成maven project,把package改成war,next
- 选择【web,mysql,mybatis】,next
SpringBoot的特点
- 自带
Spring
和SpringMVC
- 自带tomcat
- 配置文件固定是
application.yml
或者application.properties
启动方式
SpringBoot有个启动文件叫Application.Java
@SpringBootApplication
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在IDEA上原本配置tomocat的地方Add Configuration
,加号,Maven
,添加命令spring-bnoot:run
,确认就行,效果如下,然后就可以点击播放按钮启动项目了
修改pom文件,在已有的前提加上
<!-- aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- 去除自带的日记包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 使用新日记包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!--
去ssm-maven的笔记里把
文件上传使用的jar包,lang3工具包,fastjson,数据校验包
打包配置(整个build标签)
拷贝过来
-->
修改配置文件
# 端口
server.port=8080
# mybatis
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=3000
mybatis.mapperLocations=classpath:com/pdt/ssm/mapper/*.xml
# druid
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 日志
logging.config=classpath:log4j2.xml
把ssm-maven笔记里的log4j2.xml考过来
修改启动文件
@SpringBootApplication
@EnableTransactionManagement // 开启事务管理
@MapperScan("com.pdt.ssm.dao") // 扫描mybatis注解
@ServletComponentScan(basePackages = "com.pdt.ssm.aop")
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
AOP切面
虽然maven依赖不一样,但代码跟SSM一样,只需要在入口加上@ServletComponentScan
注解扫描就行
MyBatis
虽然maven依赖不一样,但代码跟SSM一样,只需要在入口加上@MapperScan
注解扫描就行
定时器
把SSM的定时器代码直接拷过来就行,什么都不用变
多环境配置
- 开发环境dev
- 生产环境prod
- 测试环境test,这个一般不用
- 不同环境有不同的数据库,不同的账号密码,不同的日志存放地址,所以需要不同的环境配置,拿yml配置举例
# application.yml
# 通用的配置直接写在主配置里
server:
port: 9001
# 这里是控制的开关,打包发布前要改
spring:
profiles:
active: prod # dev # prod
# 配置了 active 参数后,他会去读取
# application-dev.yml 文件
# 或者
# application-prod.yml 文件
# 你可以在prod.yml里设置日志,dev.yml里什么都不写
可以从SSM笔记直接拷过来用的,包括maven依赖
- 文件上传下载
- 发请求【短信】
- excel
- 数据校验
需要修改springboot专业maven,查看【尚硅谷springboot高级】视频教程
github上传了大神的springboot全家桶的使用笔记
打包和部署
查看【打包部署】笔记
20200317补充
SpringBoot自动装配原理是@conditional
注解,注解在启动的时候用来判断是否含有某个类以及该类的依赖类,如果有就带入默认参数,功能生效,如何查看那个功能生效了,可以在配置文件里写上debug=true
,控制台就会在启动的时候打印出来
Springboot-module
- 如果下载过开源项目经常会看到一个文件夹里被拆了好几个子文件夹,每个子文件夹还有pom文件,然后一脸懵逼
- 这些文件跟vue等前端项目一样有内行的名字,比如view文件夹在前端就是放页面模块的
- common 放的是公用功能模块,比如redis,安全,日志等
- tool或者util 就是公用插件,比如stringutil,serviceutil等
- system 就是核心模块,比如用户,订单等,入口文件也在这里
- monitor 就是监听运行的