SpringBoot
入门案例开发步骤
注意因为其本质还是maven工程所以还是要配置本地maven的不然依赖导入不成功。
点击新建模块选择Spring Initializr(随后就类似配置maven工程一样配置就好了主要有以下几点注意)
其他的都是和maven一样的配置
下一步后选择你要的模板我这里用的web就选spring web
之前我接触了spring框架的时候就觉得简化了太多了,现在使用boot你连配置文件依赖那些都不用自己写了,直接去写类就好了
这里我就写了一个controller
这里不用任何插件,直接用类启动就部署好了服务器就可以测试接口了
真是太强大了!!!!
其实我们观察其pom文件发现他主要实现原理
开发springboot工程必须联网,如果不是使用idea这种可以直接下载的开发工具直接到官网快速创建
SpringBoot快速启动
他的强大之处还在于不用依赖于其他插件,当其他人要用我们的工程进行测试时我们直接将工程打包生成的jar文件发给对方,对方在文件所在目录直接打开终端输入命令
java -jar springboot_01_quickstar-0.0.1-SNAPSHOT.jar
运行文件就好了
请求成功
注意——jar支持命令行启动需要依赖maven插件支持
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
起步依赖
内置有多个起步依赖,点进去看可以发现springboot内部有多个依赖管理,根据我们的需求快速完成配置
前面已知springboot程序内置了tomcat插件,默认也是用它启动,那我们不想用这个服务器,想换一个怎么办?其实不难想到,因为boot是通过继承实现的要想不使用父类的依赖我们就应该使用排除以来的方法,以下是将tomcat排除,引入jetty的方式
框起来的是我添加的代码段
基础配置
配置文件格式(三种格式)
1.默认的配置文件
2.后缀为yml的配置文件(注意配置格式 :后有个空格才能写具体配置)
3.后缀为yaml的配置文件格式和yml的一样
注意如果自己添加的配置文件在配置时没有提示,可以去项目管理添加下
这三个文件优先级依次递减(一般配置在yml文件中配置)
yaml的数据格式
yaml数据读取方式
也是三种,其中第三种是目前常用方式
以下是一个yaml里面的数据
lesson: SpringBoot
server:
port: 80
enterprise:
name: ember
age: 21
tel: 12345678912
subject:
- Java
- 前端
- 大数据
1.通过@Value注解向属性注入(像之前我们注入jdbc.properties的数据一样)
@Value("${lesson}")
private String lesson;
@Value("${server.port}")
private Integer port;
@Value("${enterprise.subject[0]}")
private String subject_00;
2.创建个Environment类型属性用于存放所有配置文件中的数据
//将配置变量中的信息全部交给环境属性(通过其快速获得需要的值)
@Autowired
private Environment environment;
System.out.println(environment.getProperty("lesson"));
System.out.println(environment.getProperty("port"));
System.out.println(environment.getProperty("enterprise.age"));
System.out.println(environment.getProperty("enterprise.subject[1]"));
3.创建个实体类对数据进行封装
package com.ember.domain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Arrays;
//将其加载成bean使spring能读取到他
@Component
//定义其要封装的是配置文件中的哪个属性
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String name;
private String age;
private String tel;
private String[] subject;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String[] getSubject() {
return subject;
}
public void setSubject(String[] subject) {
this.subject = subject;
}
@Override
public String toString() {
return "Enterprise{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", tel='" + tel + '\'' +
", subject=" + Arrays.toString(subject) +
'}';
}
}
随后在要用的类中直接用注解自动装配就好了
多环境开发配置
看看旧的方式(也是可以使用的)在yml文件中配端口为例子
#设置启用的环境
spring:
profiles:
active: dev
#配置多个开发环境
#开发
server:
port: 80
spring:
profiles: dev
---
#生产
server:
port: 81
spring:
profiles: pro
---
#测试
server:
port: 82
spring:
profiles: test
新的
#设置启用的环境
spring:
profiles:
active: test
#配置多个开发环境
#开发环境
config:
activate:
on-profile: dev
server:
port: 80
---
#生产
config:
activate:
on-profile: pro
server:
port: 81
---
#测试
config:
activate:
on-profile: test
server:
port: 82
yaml也是一样的配置
但是properties里面配置有点不一样了,我们设置个主配置文件,设置多个子配置文件
在主配置文件中使用xxx(其文件名中的-xxx)来调用其配置
开发中多环境的且换我们在配置好多环境之后,不用每次要变环境都到代码中去改
可以直接通过命令在终端启动时选着启动环境
首先我们clean maven再打包maven工程,这里注意打包之前要跳过测试(具体多种方式看maven进阶)
在文件夹中打开打好的ar包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LKQgmtsG-1652948742750)(…/…/…/AppData/Roaming/Typora/typora-user-images/image-20220513103258877.png)]
用默认环境的启动方式
java -jar springboot_01_quickstar-0.0.1-SNAPSHOT.jar
更改环境为test的启动方式
java -jar springboot_01_quickstar-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
不光可以临时改变环境,也可以改变其他配置(比如改变端口号)
多环境开发兼容问题(Maven & boot)
在maven中的配置也可以实现多环境,boot也可以配置多环境,而起主导作用的是Maven中的配置,boot中只是一个辅助
配置文件分类
就是在系统打包后,想要覆盖原始配置我们可以在打包的jar文件所在目录创建个application.yml文件去修改环境中的配置
也可以在目录下创建config文件夹在理写一个配置文件这样优先级更高
整合
SpringBoot整合junit
原来的spring整合方式
现在我们的springboot更加简单
@SpringBootTest
class SpringBootTest1ApplicationTests {
@Autowired
private BookService bookService;
@Test
void contextLoads() {
bookService.service();
}
}
也就是说白了我们直接使用@SpringBootTest就完成了junit的整合
SpringBoot整合MyBatis
因为springboot是基于spring上的简化所以根本就不用去整合spring,要整合Mvc直接在创建boot工程的时候就勾选起步依赖就好了
最重要的就是我们要手动整合Mybatis
首先创建工程勾好需要的起步依赖
2.根据业务完成实体类
3.在配置文件中配置datasource(数据库连接信息)
4.定义数据层接口和映射配置
最后就可以写测试类测试接口了
综合案例ssm
这里和原来其实没多大区别,具体添加改动如下
删除了config包(因为springboot不用你手动去配置配置类了)
没有了webapp包,那我们的页面应该放在哪呢
网上说应该放在resources下的这两个包中(一般直接放在static文件夹下)
直接放在static下的HTML文件路径相当于放在根目录直接用/xxx.html就能访问
具体要配置的是下面三点
<!--TODO 添加必要的依赖坐标-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!-- 因为页面中使用了jsp所以要用下面依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
2.在dao接口上添加@Mapper
3.在yml文件中配置端口号和连接信息
#TODO 配置数据源相关信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: 20001103
server:
port: 80
这里遇到个问题就是jsp页面无法显示,首先你要检查和jsp相关的依赖是否手动配置了
其次在application.properties文件中配置下jsp视图解析
spring.mvc.view.prefix=/jsp/
spring.mvc.view.suffix=.jsp
然后我又发现个问题就是controller中使用return无法跳转页面原来在springboot中书写跳转方式最好规范
原来我们是这样写的
return "redirect/page1.html";
return "redirect/register.jsp";
我发现用了springboot后不论我怎么更改路径都无法跳转
后来我发现
return "redirect:/page1.html";
return "redirect:/register.jsp";
这样写后就能成功跳转了。目前为止springboot的简单使用和ssm整合就到这了,springboot的其他内容放到Springboot2