SpringBoot--基础
- SpringBoot的设计目的是用来简化Spring应用的初始搭建以及开发过程
idea创建springboot入门步骤(需要idea联网)
-
创建一个空项目
-
之后再项目构建中添加springboot相关配置
本处的springboot版本为2.7.14,如果maven报错可以自己修改一下版本,最新的3.0版本以上需要jdk17以上
-
编写控制类
//Rest模式 @RestController @RequestMapping("/book") public class BookController { // 限制为get请求 @GetMapping public String getById(){ System.out.println("springboot is running"); return "springboot is running"; } }
-
运行
一些服务器信息
结果:
除了idea还可以通过官网创建或者阿里云创建:
另外在idea选择阿里云的网页创建:
springboot和spring程序的对比
- Spring程序缺点:
- 依赖设置繁琐
- 配置繁琐
- SpringBoot程序优点
- 起步依赖(简化依赖配置)
- 自动配置(简化常用工程配置)
- 辅助功能(内置服务器,......)
springboot入门解析
parent--管理坐标版本
管理坐标版本方式
在pom.xml可以找到parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
starter--定义项目依赖坐标
即:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
starter就是一个包含了若干个坐标的依赖集,而一个starter中也可以包括starter,嵌套多层
starter定义当前项目使用的所有依赖坐标,以达到减少依赖配置的目的,达到简化配置的目的
总结:实际开发中我们写坐标时,只需要写
引导类
引导类就是我们创建springboot自带的那个类
内嵌Tomcat
我们可以在starter里面找到tomcat相关坐标:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.5.3</version>
<scope>compile</scope>
</dependency>
springboot内置服务器
把tomcat替换为jetty服务器:
SpringBoot的基础配置
找到resources下的application.properties,这就是springboot的配置文件,通过键值对的方式进行配置
一些配置展示:
# 服务的端口配置
server.port=80
#修改banner--启动springboot项目时的图案
##启动时图案出现方式--本处为直接关闭
spring.main.banner-mode=off
##指定banner的图片
spring.banner.image.location=xx.png
#控制日志
#日志级别默认为info--本处为调试级别
logging.level.root=debug
#出错才显示日志
#logging.level.root=error
小知识:80端口是浏览网页端口,不用在网址中输入80,例如localhost:80/aaa直接写成localhost/aaa
其他配置自行去官网查阅
Common Application Properties (spring.io)
另外springboot提供了多种属性的配置方式:上面的properties只是其中的一种配置方式:
现在的主流是yml格式
yaml语法规则
语法规则:
字面值:
数组:
变量引用:
country: sichuan
likes: ${country}\aaa
#用引号包裹的字符串转义字符会生效
likes: "${country}\temp \t1 \t2"
读取yml的数据
// 读取yaml数据中的单一数据
@Value("${country}")
private String country1;
//多级数据
@Value("${country.china}")
private String country1;
// 读取yaml数据中的数组
@Value("${likes[0]}")
private String country1;
//使用自动装配将所有数据封装到该对象中
@Autowired
private Environment env;
//调用方法
env.getProperty("country")
装配指定数据:
#配置文件中
datasource:
url: xxx
driver: com.mysql.jdbc.Driver
username: root
password: 123456
//datasource类
//实例化bean
@Component
//指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
private String driver;
private String url;
private String username;
private String password;
@Override
public String toString() {
return "MyDataSource{" +
"driver='" + driver + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//使用
// 自动装配
@Autowired
private MyDataSource myDataSource;
其他注意事项
指定springboot的配置文件:
复制模块:
SpringBoot整合第三方技术
整合JUnit
SpringBoot是默认导入了Junit的,在对应的starter中
进行测试的步骤:
-
找到test目录下的该类
-
注入要测试的对象
-
执行测试对象的方法
@SpringBootTest class Springboot0101QuickstartApplicationTests { // 注入测试对象 @Autowired private BookController bookController; @Test void contextLoads() { // 执行对象相关方法 bookController.getById(); } }
之后运行即可,springboot测试的关键就是@SpringBootTest注
但是如果想把测试类换一个位置就需要改一下注解
至于原因:找不到对应包下的引导类设置
整合MyBatis
首先,创建项目的时候勾上这两个,当然你也可以自己手动添加相关坐标
配置相关信息:
# 配置相关信息
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/jdbcstudy
username: root
password: 123456
之后就按照之前mybait学的一样写dao层等
类
public class Book {
private int id;
private String username;
private int password;
@Override
public String toString() {
return "Book{" +
"id=" + id +
", username='" + username + '\'' +
", password=" + password +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
}
dao:
@Repository
@Mapper
public interface BookDao {
@Select("select * from user where id = #{id}")
public Book getById(int id);
}
测试:
@SpringBootTest
class DemoApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.getById(1));
}
}
如果时区错误或mysql版本过高:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=GMT
username: root
password: 123456
mybatis-plus:
global-config:
db-config:
# 设置id为自增
id-type: auto
整合MyBatis-Plus
类似MyBatis,但是也有一些不同:
- 导入的坐标不同
- 数据层实现简化
springboot没有收录mybatis-plus
创建方法(第一种--快速):
-
使用阿里云的创建:
-
选择mybatis-plus:
创建方法(第二种--正统):
-
选择默认的创建方法:
-
在pom文件手动导入mybaits-plus的坐标:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency>
整合使用:
在之前写的mybatis整个的基础上:
@Repository
@Mapper
public interface BookDao extends BaseMapper<Book>{
}
//下面改成上面
//public interface BookDao {
// @Select("select * from user where id = #{id}")
// public Book getById(int id);
//}
测试类改为:
@SpringBootTest
class DemoApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
//selectById是 BaseMapper的方法,具体自行查阅api
System.out.println(bookDao.selectById(2));
}
}
另外,映射数据库的实体类名字改成和表名一样
如果表名叫tb_book,而类叫book,可以在配置文件中为其添加前缀
#设置mybatis-plus相关配置
mybatis-plus:
global-config:
db-config:
table-prefix: tb_
整合Druid
导入druid的starter坐标:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
配置方法一:
在springboot的配置文件中:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=GMT
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
配置方法二:(推荐)
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=GMT
username: root
password: 123456
标签:username,String,--,基础,private,springboot,password,public,SpringBoot
From: https://www.cnblogs.com/rainaftersummert/p/17676762.html