概述
1.特点2.快速入门3.SpringBoot的配置文件3.1配置文件类型和作用3.2使用注解@Value映射3.3使用注解@ConfigurationProperties映射
4.SpringBoot整合其他技术4.1整合Mybatis1.添加依赖2.添加MySQL连接驱动3.添加数据库连接信息4.创建数据库5.创建实体Bean6.编写Mapper7.配置Mapper映射文件8. 在application.properties中添加mybatis的信息9.编写测试Controller10.测试结果
4.2整合Junit(用于测试)1.添加Junit的起步依赖2.编写测试类3.控制台打印信息
4.3整合Spring Data JPA1.添加Spring Data JPA的起步依赖2.添加数据库驱动依赖3.在application.properties中配置数据库和jpa的相关属性4.创建实体配置实体5. 编写UserRepository6.编写测试类7.测试结果
4.4整合Redis(缓存)1.添加Redis的起步依赖2. 配置Redis的连接信息3. 注入RedisTemplate测试redis操作4.测试结果
1.特点
1.为基于Spring的开发提供更快的入门体验
2.开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求
3.提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等
4.SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式
2.核心功能
2.1起步依赖 起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
2.2自动配置 Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。
2.快速入门
创建Maven工程链接: link.
相关代码:
SpringBoot的起步依赖: 在pom.xml文件里添加
<parent>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-parent
</artifactId
>
<version>2.0.1.RELEASE
</version
>
</parent
>
编写SpringBoot的引导类: 要通过SpringBoot提供的引导类起步SpringBoot才可以进行访问
package com
.itheima
;
import org
.springframework
.boot
.SpringApplication
;
import org
.springframework
.boot
.autoconfigure
.SpringBootApplication
;
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String
[] args
) {
SpringApplication
.run(MySpringBootApplication
.class);
}
}
编写Controller: 在引导类MySpringBootApplication同级包或者子级包中创建QuickStartController
package com
.itheima
.controller
;
import org
.springframework
.stereotype
.Controller
;
import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
import org
.springframework
.web
.bind
.annotation
.ResponseBody
;
@Controller
public class QuickController {
@RequestMapping("/quick")
@ResponseBody
public String
quick(){
return "springboot 访问成功!!!!!!!!!!!!!!!!!!!";
}
}
测试结果: 工程热部署配置链接: link.
3.SpringBoot的配置文件
3.1配置文件类型和作用
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置。SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件。其中,application.properties文件是键值对类型的文件,之前一直在使用,所以此处不在对properties文件的格式 进行阐述。除了properties文件外,SpringBoot还可以使用yml文件进行配置,下面对yml文件进行讲解。
注意配置不要重复! 以下代码有重复的地方
#yml文件语法
#注意空格
#普通数据配置
name
: dengjianglong
#对象的配置
person
:
name
: dengjianglong
age
: 23
addr
: hunan
sex
: man
#修改端口号和虚拟工程名
server
:
port
: 8081
servlet
:
context
-path
: /demo
#行内对象配置
person1
: {name
: dengjianglong
,age
: 23,addr
: hunan
}
#配置数据,集合
(普通字符串
)
city
:
- hunan
- beijin
city1
: [hunan
,beijin
]
#配置数据,集合
(对象数据
)
student
:
- name
: dengjianglong
age
: 23
addr
: hunan
- name
: zousiwen
age
: 21
addr
: hunan
#map配置
map
:
key1
: one
key2
: two
2.配置文件与配置类的属性映射方式
3.2使用注解@Value映射
优点:匹配精确
缺点:繁琐
application.yml配置如下:
person
:
name
: dengjianglong
age
: 23
addr
: hunan
放到spring管理的Bean的字段上
package com
.itheima
.controller
;
import org
.springframework
.beans
.factory
.annotation
.Value
;
import org
.springframework
.stereotype
.Controller
;
import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
import org
.springframework
.web
.bind
.annotation
.ResponseBody
;
@Controller
public class Quick2Controller {
@Value("${person.name}")
private String name
;
@Value("${person.addr}")
private String addr
;
@RequestMapping("/quick2")
@ResponseBody
public String
quick2(){
return "name="+name
+",address="+addr
;
}
}
访问结果如下
3.3使用注解@ConfigurationProperties映射
使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法
application.yml配置如下:
person
:
name
: dengjianglong
age
: 23
addr
: hunan
sex
: man
放到spring管理的Bean的字段上:
package com
.itheima
.controller
;
import org
.springframework
.beans
.factory
.annotation
.Value
;
import org
.springframework
.boot
.context
.properties
.ConfigurationProperties
;
import org
.springframework
.stereotype
.Controller
;
import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
import org
.springframework
.web
.bind
.annotation
.ResponseBody
;
@Controller
@ConfigurationProperties(prefix
= "person")
public class Quick3Controller {
private String name
;
private String addr
;
private String sex
;
@RequestMapping("/quick3")
@ResponseBody
public String
quick3(){
return "name="+name
+",address="+addr
+",sex="+sex
;
}
public String
getName() {
return name
;
}
public void setName(String name
) {
this.name
= name
;
}
public String
getAddr() {
return addr
;
}
public void setAddr(String addr
) {
this.addr
= addr
;
}
public String
getSex() {
return sex
;
}
public void setSex(String sex
) {
this.sex
= sex
;
}
}
@ConfiguaritionProperties执行器的配置
加在pom.xml里 可配可不配,配了更方便,可在配置信息时给予提示
<!--@ConfiguaritionProperties执行器的配置
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-configuration
-processor
</artifactId
>
<optional>true</optional
>
</dependency
>
执行结果如下
4.SpringBoot整合其他技术
4.1整合Mybatis
项目层次大致如下:
1.添加依赖
<!--mybatis起步依赖
-->
<dependency>
<groupId>org
.mybatis
.spring
.boot
</groupId
>
<artifactId>mybatis
-spring
-boot
-starter
</artifactId
>
<version>1.1.1</version
>
</dependency
>
2.添加MySQL连接驱动
<!-- MySQL连接驱动
-->
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
</dependency
>
3.添加数据库连接信息
在application.properties中添加数据量的连接信息
#数据库连接信息
spring
.datasource
.driverClassName
=com
.mysql
.jdbc
.Driver
#连接本地数据库
spring
.datasource
.url
=jdbc
:mysql
://localhost
:3306/shops
?useUnicode
=true&characterEncoding
=utf8
#账号密码跟本地数据库一致
spring
.datasource
.username
=root
spring
.datasource
.password
=123456
4.创建数据库
5.创建实体Bean
package com
.itheima
.domain
;
public class User {
private Integer id
;
private String username
;
private String name
;
private String sex
;
public Integer
getId() {
return id
;
}
public void setId(Integer id
) {
this.id
= id
;
}
public String
getUsername() {
return username
;
}
public void setUsername(String username
) {
this.username
= username
;
}
public String
getName() {
return name
;
}
public void setName(String name
) {
this.name
= name
;
}
public String
getSex() {
return sex
;
}
public void setSex(String sex
) {
this.sex
= sex
;
}
@Override
public String
toString() {
return "User{" +
"id=" + id
+
", username='" + username
+ '\'' +
", name='" + name
+ '\'' +
", sex='" + sex
+ '\'' +
'}';
}
}
6.编写Mapper
package com
.itheima
.mapper
;
import com
.itheima
.domain
.User
;
import org
.apache
.ibatis
.annotations
.Mapper
;
import java
.util
.List
;
@Mapper
public interface UserMapper {
public List
<User> queryUserList();
}
7.配置Mapper映射文件
在src\main\resources\mapper路径下创建UserMapper.xml配置文件"
<?xml version
="1.0" encoding
="utf-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace
="com.itheima.mapper.UserMapper">
<select id
="queryUserList" resultType
="user">
<!--表名根据自己的数据库进行改变
-->
select
* from users
</select
>
</mapper
>
8. 在application.properties中添加mybatis的信息
#配置mybatis信息
#spring集成Mybatis环境
#pojo别名扫描包
mybatis
.type
-aliases
-package=com
.itheima
.domain
#加载mybatis映射文件
mybatis
.mapper
-locations
=classpath
:mapper
9.编写测试Controller
package com
.itheima
.controller
;
import com
.itheima
.domain
.User
;
import com
.itheima
.mapper
.UserMapper
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.stereotype
.Controller
;
import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
import org
.springframework
.web
.bind
.annotation
.ResponseBody
;
import java
.util
.List
;
@Controller
public class MybatisController {
@Autowired
private UserMapper userMapper
;
@RequestMapping("/query")
@ResponseBody
public List
<User> queryUserList(){
List
<User> users
= userMapper
.queryUserList();
System
.out
.println(users
);
return users
;
}
}
10.测试结果
4.2整合Junit(用于测试)
1.添加Junit的起步依赖
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-test
</artifactId
>
<scope>test
</scope
>
<exclusions>
<exclusion>
<groupId>org
.junit
.vintage
</groupId
>
<artifactId>junit
-vintage
-engine
</artifactId
>
</exclusion
>
</exclusions
>
</dependency
>
2.编写测试类
package com
.itheima
;
import com
.itheima
.domain
.User
;
import com
.itheima
.mapper
.UserMapper
;
import org
.junit
.Test
;
import org
.junit
.runner
.RunWith
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.boot
.test
.context
.SpringBootTest
;
import org
.springframework
.test
.context
.junit4
.SpringRunner
;
import java
.util
.List
;
@RunWith(SpringRunner
.class)
@SpringBootTest(classes
= SpringbootMybatisApplication
.class)
public class MybatisTest {
@Autowired
private UserMapper userMapper
;
@Test
public void test(){
List
<User> users
= userMapper
.queryUserList();
System
.out
.println(users
);
}
}
3.控制台打印信息
4.3整合Spring Data JPA
1.添加Spring Data JPA的起步依赖
<!-- springBoot JPA的起步依赖
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-data
-jpa
</artifactId
>
</dependency
>
2.添加数据库驱动依赖
<!-- MySQL连接驱动
-->
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
</dependency
>
3.在application.properties中配置数据库和jpa的相关属性
#数据库连接信息
spring
.datasource
.driverClassName
=com
.mysql
.jdbc
.Driver
spring
.datasource
.url
=jdbc
:mysql
://localhost
:3306/shops
?useUnicode
=true&characterEncoding
=utf8
spring
.datasource
.username
=root
spring
.datasource
.password
=123456
#JPA Configuration
:
spring
.jpa
.database
=MySQL
spring
.jpa
.show
-sql
=true
spring
.jpa
.generate
-ddl
=true
spring
.jpa
.hibernate
.ddl
-auto
=update
spring
.jpa
.hibernate
.naming_strategy
=org
.hibernate
.cfg
.ImprovedNamingStrategy
4.创建实体配置实体
package com
.itheima
.domain
;
import javax
.persistence
.*
;
@Entity
@Table(name
= "users")
public class User {
@Id
@GeneratedValue(strategy
= GenerationType
.IDENTITY
)
private Integer id
;
private String username
;
private String name
;
private String sex
;
public Integer
getId() {
return id
;
}
public void setId(Integer id
) {
this.id
= id
;
}
public String
getUsername() {
return username
;
}
public void setUsername(String username
) {
this.username
= username
;
}
public String
getName() {
return name
;
}
public void setName(String name
) {
this.name
= name
;
}
public String
getSex() {
return sex
;
}
public void setSex(String sex
) {
this.sex
= sex
;
}
@Override
public String
toString() {
return "User{" +
"id=" + id
+
", username='" + username
+ '\'' +
", name='" + name
+ '\'' +
", sex='" + sex
+ '\'' +
'}';
}
}
5. 编写UserRepository
package com
.itheima
.repository
;
import com
.itheima
.domain
.User
;
import org
.springframework
.data
.jpa
.repository
.JpaRepository
;
import java
.util
.List
;
public interface UserRepository extends JpaRepository<User,Integer> {
public List
<User> findAll();
}
6.编写测试类
package com
.itheima
;
import com
.itheima
.domain
.User
;
import com
.itheima
.repository
.UserRepository
;
import org
.junit
.Test
;
import org
.junit
.runner
.RunWith
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.boot
.test
.context
.SpringBootTest
;
import org
.springframework
.test
.context
.junit4
.SpringRunner
;
import java
.util
.List
;
@RunWith(SpringRunner
.class)
@SpringBootTest(classes
= SpringbootJpaApplication
.class)
public class JpaTest {
@Autowired
private UserRepository userRepository
;
@Test
public void test(){
List
<User> all
= userRepository
.findAll();
System
.out
.println(all
);
}
}
7.测试结果
4.4整合Redis(缓存)
1.添加Redis的起步依赖
<!-- 配置使用redis启动器
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-data
-redis
</artifactId
>
</dependency
>
2. 配置Redis的连接信息
运行Redis
在application.properties中配置
#Redis
spring
.redis
.host
=127.0.0.1
spring
.redis
.port
=6379
3. 注入RedisTemplate测试redis操作
package com
.itheima
;
import com
.fasterxml
.jackson
.core
.JsonProcessingException
;
import com
.fasterxml
.jackson
.databind
.ObjectMapper
;
import com
.itheima
.domain
.User
;
import com
.itheima
.repository
.UserRepository
;
import org
.junit
.Test
;
import org
.junit
.runner
.RunWith
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.boot
.test
.context
.SpringBootTest
;
import org
.springframework
.data
.redis
.core
.RedisTemplate
;
import org
.springframework
.test
.context
.junit4
.SpringRunner
;
import java
.util
.List
;
@RunWith(SpringRunner
.class)
@SpringBootTest(classes
= SpringbootJpaApplication
.class)
public class RedisTest {
@Autowired
private RedisTemplate
<String,String> redisTemplate
;
@Autowired
private UserRepository userRepository
;
@Test
public void test() throws JsonProcessingException
{
String userListJson
= redisTemplate
.boundValueOps("user.findAll").get();
if(null
==userListJson
){
List
<User> all
=userRepository
.findAll();
ObjectMapper objectMapper
=new ObjectMapper();
userListJson
= objectMapper
.writeValueAsString(all
);
redisTemplate
.boundValueOps("user.findAll").set(userListJson
);
System
.out
.println("========从数据库中获得数据========");
}
else
{
System
.out
.println("========从redis缓存中获得数据======");
}
System
.out
.println(userListJson
);
}
}
4.测试结果
第一次运行: 第二次运行:
以上就是本小白刚接触springboot的一次小总结,溜了溜了