springboot中核心配置文件application.properties、application.yaml和application.yml同时存在时,依据application.properties为先,如果没有配置,则按照后面两个的来。
spring从2002年在国外开始使用,2003年传入国内。spring的两个核心是IOC控制反转和AOP面向切面编程。
项目创建
创建springboot项目是在Spring Initializr中,默认是使用Default htttps://start.spring.io,如果网络不好,无法创建,可以使用下面一行中的自定义Custom,手动输入网址,利用国内阿里云镜像进行创建,网址:https://start.aliyun.com/。创建出来的项目结构和官方默认地基本相同,pom文件会略有不同,但功能相同,版本会比官方默认的慢一些。
启动类启动的是spring ioc容器,返回的是一个容器
修改启动项目时的大logo,在resources资源文件夹下创建一个banner.txt的文件,在里面直接输入新的logo就可以。如果想关闭logo的显示,可以在配置文件中添加如下语句:
spring.main.banner-mode=off
或者在启动类中输入如下代码
setBannerMode(Banner.Mode.OFF)
setBannerMode(Banner.Mode.CONSOLE)
表示在控制台输出logo
使用@RequestMapping()时,返回的是一个字符串而不是一个页面时,需要加上@ResponsBody以表示返回的是一个字符串。不加则表示返回的是一个页面路径
public @ResponsBody String test(){
return "test Spring Boot";
}
springboot项目中的依赖版本都是可以在pom文件中进行覆盖修改的,但修改可能会导致部分不兼容而导致报错的问题。例如修改tomcat的版本
<properties>
<java.version>1.8</java.version>
<tomcat.version>9.0.36</tomcat.version>
</properties>
其它的类似,都是这样修改
springboot集成mybatis,添加如下依赖。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
因为spring和springMVC集成mybaits都是由mybatis来负责完成的,所以添加mybatis依赖时,需要添加版本号,不像其它依赖一样可以集成父依赖的版本号。
springboot添加MySQL的jdbc驱动包依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
#配置数据库连接信息,application.properties配置文件
spring.datasource.url=jdbc:mysql://localhost:3306/finance?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接配置,application.yaml配置文件
spring:
datasource:
#用户名
username: root
#密码
password: 123456
# url需要指定时区serverTimezone为 GMT%2B8 :北京时间东八区
url: jdbc:mysql://localhost:3306/finance?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=true
# 新版的驱动类改成了com.mysql.cj.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
#指定mybatis的配置文件
mybatis.config-location=classpath:mybatis-config.xml
#指定mapper.xml的文件
mybatis.mapper-locations=
Idea中,当你从其它地方粘贴一个文件到新项目中时,它往往是不编译的,需要我们手动编译build,否则运行会报错
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<!--**表示多级目录,*表示任意字符集(名字,)此处的xml文件多为
mapper.xml,include表示包含,将sec/main/java下所有以xml结尾
的文件均进行编译,编译到target包中-->
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<!--把sec/main/resources所有的文件都编译到target中去-->
<include>**/*.*</include>
</includes>
</resource>
</resources>
<build>
controller类返回jsp页面,需要在pom文件中添加解析jsp依赖
<!--前端页面使用JSP-->
<!--引入Spring Boot内嵌的tomcat对JSP的解析包-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--jstl标签依赖的jar包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
添加返回路径时的前后缀
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
Maven的pom.xml中配置页面jsp编译位置
<build>
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<!--把src/main/webapp下的所有文件都编译到tatget目录中,
位置为targetPath指定的目录文件-->
<include>**/*.*</include>
</includes>
</resource>
<build>
<!--热部署插件,运行时使用右键run的方式运行,再次修改代码后,
不需要停掉服务重启,在上面任务栏Build中重新build一下,
devtoos插件就会自动帮助重启服务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
SpringBoot中使用Jsp
SpringBoot并不推荐使用Jsp,而是使用template,所以在SpringBoot中使用Jsp需要进行一些配置
- 首先在src目录下创建webapp文件夹,此时知识普通的文件夹,需要到右上角的工程结构按钮中改变此文件夹的属性,使其成为web文件夹,选择该模块,点击Web,右下角的Web Resource Directory中将webapp文件夹添加一下。
- 在application.properties中配置Jsp的视图解析器
#配置视图解析器
#/ = /src/main/webapp
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
- 在pom.xml文件中添加相应的依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--指定Jsp编译后的存放目录-->
<resources>
<resource>
<!--Jsp原来的目录-->
<directory>src/main/webapp</directory>
<!--指定编译后存放的目录-->
<targetPath>META-INF/resources</targetPath>
<!--指定处理的目录和文件-->
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
配置好以上的内容之后便可以正常使用
SpringBoot集成MyBatis
默认情况下,Mybatis 的 xml 映射文件不会编译到 target 的 class 目录下,因此需要进行相应的配置。有两种方法均可以实现。
方式一
在 pom.xml 文件中配置 resource
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
注释掉 StudentMapper 接口上的@Mapper 注解
//@Mapper
public interface AdminMapper {
Admin queryById(Integer id);
}
在运行的主类上添加注解包扫描MapperScan(“com.abc.springboot.mapper”)
@SpringBootApplication
//Mybatis 提供的注解:扫描数据持久层的 mapper 映谢配置文件,DAO 接口上就不用加@Mapper
//basePackages 通常指定到数据持久层包即可
@MapperScan(basePackages = "com.lml.mapper")
//@MapperScan("com.lml.mapper")也可以
public class Application {
方法二
因为 SpringBoot 不能自动编译接口映射的 xml 文件,还需要手动在 pom 文件中指定,所以有的公司直接将映射文件放到 resources 目录下 ,在 resources 目录下新建目录 mapper 存放映射文件,将 StudentMapper.xml 文件移到resources/mapper 目录下:
在 application.properties 配置文件中指定映射文件的位置:
# 指定 Mybatis 映射文件的路径
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于JavaScript语言的一个子集,但可以被多种不同的编程语言解析和生成。JSON格式的数据可以通过网络在客户端和服务器之间进行传输和交换。
JSON使用键值对来表示数据,键和值之间使用冒号分隔,多个键值对之间使用逗号分隔,最外层使用大括号包裹。例如:
{
"name": "John",
"age": 30,
"city": "New York"
}
在JSON中,键必须是一个字符串,值可以是任何类型的数据,包括数字、字符串、布尔值、数组、对象等。例如:
{
"name": "John",
"age": 30,
"isMarried": false,
"hobbies": ["reading", "music", "travel"],
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
}
}
JSON是一种非常常见的数据格式,被广泛用于Web应用程序和移动应用程序等领域。由于其轻量级、易于解析和生成、语言无关等特点,越来越多的API也采用JSON格式来进行数据交换。