一、Spring Boot 入门
Spring Boot 简介
简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案;
理解:帮你整合好,大部分框架之间的各种配置文件和jar。反正就是省去很多麻烦事。
微服务
每一个springboot项目都是集团公司下的子公司。
YAML语法:(层级之间的关系,一定要Tab缩进,否则不识别)
YAML:以数据为中心,比json、xml等更适合做配置文件;
1、基本语法 k:(空格)v:表示一对键值对(空格必须有); 以Tab的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
注意:属性和值区分大小写
2、值的写法 字面量:普通的值(数字,字符串,布尔) k: v:字面直接来写;
字符串默认不用加上单引号或者双引号;
" ":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
' ':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
k: v:在下一行来写对象的属性和值的关系;注意缩进
对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName: zhangsan,age: 18}
数组(List、Set):
用 - 值表示数组中的一个元素
pets:
‐ cat
‐ dog
‐ pig
行内写法:
pets: [cat,dog,pig]
二次复习笔记,可以做参考:
三、yaml文件格式,每次下级属性,需要Tab缩进,才行。注意
也是key-value形式,可以表示一个对象、集合。
1、语法:
key: value
冒号后需要有一个空格。
key1:
key2:
key3: value
2、取属性的值
1)可以使用@Value注解取
@Value("${page.rows}")
private Integer rows;
2)可以使用@ConfigurationProperties
把属性的值批量绑定到一个对象上。
@ConfigurationProperties(prefix = "person")
@Component
public class Person {
private String name;
private int age;
private String sex;
private String address;
get和set方法省....
使用yml可以表示的数据:
key: value
表示对象:
person:
name: xxx
age: xxx
address: xxxx
表示集合:
list:
- ele1
- ele2
- ele3
list: [ele1, ele2, ele3]
#Redis
redis:
host: 192.168.25.153
port: 6379
#elasticsearch
data:
elasticsearch:
cluster-name: elasticsearch
cluster-nodes: 127.0.0.1:9300
page:
rows: 50
person:
name: 张三
age: 18
sex: 女
address: 杭州
# myAddress:
# - "北京昌平"
# - "北京顺义"
# - "上海浦东"
# - "新疆和田"
myAddress: ["北京昌平","北京顺义","上海浦东","新疆和田"]
springboot创建工程的步骤:
1)创建springboot工程,要求必须是maven工程。必须继承spring-boot-stater-parent工程。
2)编写controller,实现业务逻辑
3)编写启动类,添加一个main方法。其上需要添加一个注解@SpringBootApplication
4)启动main方法
3、功能点梳理
1)springboot工程必须是maven工程
2)工程必须继承spring-boot-stater-parent工程。
3)编写Controller和启动类。
3)@SpringBootApplication,其中包含@ComponentScan注解,包扫描器。
扫描引导类下所有子包中的类。注意:要求启动类必须是顶层包中
3、JPA持久层整合
使用方法:
1)添加起步依赖。
<!--web项目的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springBoot JPA的起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2)创建一个配置文件的数据源参数
3)编写Entity、dao
//springDataJpa的相关实体类所需注解
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private int age;
private String username;
private String password;
private String email;
private String sex;
dao层接口,继承jpa
public interface UserDao extends JpaRepository<User,Integer> {
}
4)controller调用自己写
4、springboot中的模板页面展示
使用方法:
1)添加起步依赖
<!--3.2.1添加freemarker的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2)创建模板文件,必须,保存位置resources/templates目录下
文件的扩展名必须是ftl
<html>
<head>
<title>hello spring boot</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>id</th>
<th>用户名</th>
<th>密码</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
<#list userList as user>
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.name}</td>
</tr>
</#list>
</tbody>
</table>
<img src="/images/2.jpg">
</body>
</html>
3)编写Controller把查询结果传递给模板。
5、静态资源的处理
resources/static目录
静态资源的根目录。
四、常见框架整合
1、mybatis
使用方法:
1)添加mybatis的起步依赖。
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
2)在配置文件中配置数据源信息。
#yml的配置语法格式
#DB Configuration 数据源配置:
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/vuedb?useUnicode=true&characterEncoding=utf8
username: root
password: 123
#JPA Configuration:
#设置数据库类型为mysql
jpa:
database: MySQL
#后台是否显示sql语句
show-sql: true
generate-ddl: true
3)编写pojo类、mapper接口、mapper映射文件。
public class MUser {
private int id;
private int age;
private String username;
private String password;
private String email;
private String sex;
}
4)手动配置mybatis的包扫描器。
在启动类上添加@MapperScan注解
5)使用
使用mybatis出现如下错误:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.itheima.mappper.UserMapper.getUserList
原因:接口中的方法没有找到对应的sql语句
解决方案:
1、把映射文件放到resources目录下,对应的创建目录结构。
可以配置mybatis的一些参数:
#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.itheima.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
2、可以修改pom.xml文件,让maven把src/main/java目录下的配置文件也复制到目标目录。(推荐)
<!--这段,意识是把mapper包中的xml映射文件,也一起放入编译后的文件中。-->
<!--没有这段,xml文件是不会被编译的-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
<!--————————————结束————————————————-->
实体类属性注解封装
/***
* @ConfigurationProperties:告诉springboot将本类中的所有属性,和配置文件相关的配置进行绑定;
* prefix = "person" :配置文件中那个下面的所有属性进行类型注入的映射
* @Component:把这个类配置进容器中,才能使用绑定注解的功能
* 另外还需注意:要导入封装属性的jar坐标。
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
//人的属性
private String lastName;
private int age;
private boolean boss;
private Date birth;
//账户和公司属性
private Map<String,Object> maps;
private List<Object> lists;
//宠物属性
private Dog dog;
pom.xml文件的封装属性的映射依赖
<dependency>
<!--封装属性的映射jar-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
@PropertySource&@ImportResource&@Bean 三个注解
@PropertySource:加载指定的配置文件;写法:@PropertySource(value = {"classpath:person.properties"})
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
@ImportResource(locations = {"classpath:beans.xml"})
@Bean给容器中添加组件
部署打包成jar
1.打包部署
是java工程打包之后会得到jar包。
打包方式:
1)需要在pom文件中添加一个插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2)可以使用maven的命令打包package
清除原有编译的代码,再打包,打包需要跳过测试代码
clean package -DskipTests
3)得到部署好的jar包,并且启动,测试
热部署:
注意:IDEA进行SpringBoot热部署失败原因
出现这种情况,并不是热部署配置问题,其根本原因是因为Intellij IEDA默认情况下不会自动编译,需要对IDEA进行自动编译的设置,如下:
然后 Shift+Ctrl+Alt+/,选择Registry