SpringBoot入门笔记

初识SpringBoot与微服务

SpringBoot

  Java企业级应用过程->J2EE->spring->springboot,他是一个不断简化开发的过程。由于Spring的发展,项目出现了各种整合文件,这导致我们必须编写大量Spring的配置代码。SpringBoot 正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用Spring 、更容易的集成各种常用的中间件、开源软件。
  Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。

微服务

  在以前的企业级项目中实用的是单体应用架构,这种架构师把一个包部署到一台服务器上,如果并发量大了,采用集群的方式复制多个服务器镜像,在配置一台负载均衡服务器用于控制访问,如果进行维护就需要停止所有服务器,然后进行修改。
  微服务是一种架构风格,是分布式集群的应用,把不同任务分部到不同的服务器上。
微服务论文

SpringBoot环境搭建

SpringBoot官方文档
SpringBoot非官方中文文档

官方文档生成

在官网的SpringBoot页面的最下面有个:
在这里插入图片描述
点击Spring Initializr进入配置页面,配置完成后选择Generate-Ctrl+回车进行下载SpringBoot初识话文件。

idea集成

在新建项目时选择Spring Initializr配置过程与上面类似,不在赘述。


初始环境介绍

  • 业务包要建在@SpringBootApplication修饰类的同包下建包,其他地方会报错。
  • Banner生成:在resources文件夹下新建一个banner.txt文件,把自定义的banner粘贴进即可banner在线生成

springboot原理

自动配置

  • 打开pom文件会发现我们的pom文件已经有父依赖,核心依赖都在spring-boot-dependencies 中。
  • pom父类中指定了覆盖SpringBoot默认配置的配置文件格式。

启动器:

<!-- web项目启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--热部署配置-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

注意:IDEA进行SpringBoot热部署失败原因
出现这种情况,并不是热部署配置问题,其根本原因是因为Intellij IEDA默认情况下不会自动编译,需要对IDEA进行自动编译的设置:idea热部署配置


YML文件

语法

  1. 普通对象或map
person:
    name: tdte
    age: 30

# 行内表示
person: {name: tdte, age: 20}

  1. 数组
city:
    - beijing
    - shanghai
    - guangzhou
    - shenzhen

# 行内表示
city: [beijing,shanghai,guangzhou,shenzhen]

# 数组对象
student:
  - name: zhangsan
    age: 18
    score: 100
  - name: lisi
    age: 28
    score: 88
  - name: wangwu
    age: 38
    score: 90
# 行内表示
student: [{name: tom,age: 18,addr: beijing},{name: lucy,age: 17, addr: tianjin}]

配置文件与配置类的属性映射方式

使用注解@Value映射

我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上

例如:

application.properties配置如下:

person:
  name: zhangsan
  age: 18

或者,application.yml配置如下:

person:
  name: zhangsan
  age: 18

实体Bean代码如下:

@Controller
public class QuickStartController {

    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private Integer age;

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "springboot 访问成功! name="+name+",age="+age;
    }
}

使用注解@ConfigurationProperties映射

通过注解@ConfigurationProperties(prefix=“配置文件中的key的前缀”)可以将配置文件中的配置自动与实体进行映射

application.properties配置如下:

person:
  name: zhangsan
  age: 18

或者,application.yml配置如下:

person:
  name: zhangsan
  age: 18

实体Bean代码如下:

@Controller
// yaml的对象person前缀
@ConfigurationProperties(prefix = "person")
public class QuickStartController {
    // 根据key名称自动装配
    private String name;
    private Integer age;

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "springboot 访问成功! name="+name+",age="+age;
    }

    // 装配的前提需要给属性设置get/set方法,否则获取的值为null
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

执行器:

<!-- 执行器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

SpringBoot整合

SpringBoot整合Mybatis

  • 注意SpringBoot2.2.5会出现不满意状态异常
  1. 依赖
<!-- mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

<!--mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  1. 数据库配置:
    application.properties
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://47.94.145.43:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=311776


#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=top.tdte.pojo
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
  1. 编写Mapper
@Mapper
@Repository
public interface UserMapper {
	public List<User> queryUserList();
}

注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中

  1. 配置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="top.tdte.mapper.UserMapper">
    <select id="queryUserList" resultType="user">
        select * from user
    </select>
</mapper>

整合单元测试

起步依赖

<!--测试的起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

在测试包下编写测试类:

//运行器选择spring的
@RunWith(SpringRunner.class)
//这里注意,选择非测试类的启动器类
@SpringBootTest(classes = SpringbootMybatisApplication.class)
public class MapperTest {
    // 从spring取出我们需要测试的单元进行测试
    @Autowired
    private UserMapper userMapper;

    @Test
    public void test(){
        List<User> users = userMapper.queryUserList();
        System.out.println(users);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值