SpringBoot笔记

3 篇文章 0 订阅
2 篇文章 0 订阅

SpringBoot简介

简化Spring使用难度,简省配置,快速高效使用Spring框架开发应用

核心功能
  • SpringBoot项目不需要模板化的配置。
  • SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了。
  • SpringBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用.java的文件去编写配置信息。
  • SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。
SpringBoot简介

在这里插入图片描述

SpringBoot的目录结构

pom.xml文件
  • 指定了一个父工程: 指定当前工程为SpringBoot,帮助我们声明了starter依赖的版本。
  • 项目的元数据:包名,项目名,版本号。
  • 指定了properties信息:指定了java的版本为1.8
  • 导入依赖:默认情况导入spring-boot-starter,spring-boot-starter-test
  • 插件:spring-boot-maven-plugin
src目录
-src
  -main	  
    -java
      -包名
        启动类.java			# 需要将controller类,放在启动类的子包中或者同级包下
    -resources
      -static				  # 存放静态资源的
      -templates			   # 存储模板页面的
      application.properties	 # SpringBoot提供的唯一的配置文件
  -test   				      # 只是为了测试用的
SpringBoot三种启动方式
  1. 运行启动类的main方法
  2. maven命令
    mvn spring-boot:run
  3. 采用jar包的方式运行
    将当前项目打包成一个jar文件,并通过java -jar jar文件

SpringBoot原理分析

starters的原理
  • starters是依赖关系的整理和封装。一套依赖坐标的整合,可以让导入应用开发的依赖坐标更方便。

  • 有了这些Starters,你获得Spring和其整合的所有技术的一站式服务。无需配置、无需复制粘贴依赖坐标,一个坐标即可完成所有入门级别操作。

  • 举例:JPA or Web开发,只需要导入spring-boot-starter-data-jpaspring-boot-starter-web
    在这里插入图片描述

  • 每个Starter包含了当前功能下的许多必备依赖坐标,这些依赖坐标是项目开发,上线和运行必须的。同时这些依赖也支持依赖传递。举例:spring-boot-starter-web包含了所有web开发必须的依赖坐标
    在这里插入图片描述

  • starter的命名规范:官方的starter写法spring-boot-starter-*,非官方的starter写法thirdpartyproject-spring-boot-starter

自动配置的原理

每个Starter基本都会有个AutoConfiguration的Jar包,每个AutoConfiguration定义了约定的默认配置。
有了自动配置,那么我们配置基本就全部采用默认配置。当然需要配置时,也可以更改。

如何查看自动配置的值在哪里?
追踪步骤:

  1. @EnableAutoConfiguration
  2. @Import({AutoConfigurationImportSelector.class})
  3. spring.factories
  4. ServletWebServerFactoryAutoConfiguration
  5. @EnableConfigurationProperties({ServerProperties.class})

SpringBoot常用配置

SpringBoot的配置文件格式

SpringBoot的配置文件支持properties和yml,甚至他还支持json。

更推荐使用yml文件格式:

  1. yml文件,会根据换行和缩进帮助咱们管理配置文件所在位置

  2. yml文件,相比properties更轻量级一些yml文件的劣势:
    1. 严格遵循换行和缩进
    2. 在填写value时,一定要在: 后面跟上空格

多环境配置

在application.yml文件中添加:

spring:
  profiles:
    active: 环境名

在resource目录下,创建多个application-环境名.yml文件即可
在部署工程时,通过 java -jar jar文件 --spring.profiles.active=环境

配置属性如何传入注入Bean

1、使用注解@Value映射

  • @value注解将配置文件的值映射到Spring管理的Bean属性值
  • 可以注入对象,不能注入Map、数组、集合的类型数据。
  • 不需要提供Setter方法

2、使用注解@ConfigurationProperties映射

  • 通过注解@ConfigurationProperties(prefix=’'配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射。
  • 可以注入对象、Map、数组、集合的类型数据。
  • 使用@ConfigurationProperties方式必须提供Setter方法。

SpringBoot集成一切

集成MyBatis
  1. 勾选依赖坐标
    • Spring Web Starter
    • MySQL Driver
    • MyBatis Framework
  2. 在application.yml中添加数据库连接信息
spring:
  #  数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://127.0.0.1/数据库名?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

# mybatis配置
mybatis:
  #  扫描接口对应的XML映射文件
  mapper-locations: classpath:mapper/*.xml
  #  起别名
  type-aliases-package: top.zhenghy123.pojo
  1. 编写Dao接口:使用@Mapper标记该类是一个Dao接口,可以被SpringBoot自动扫描(或者在启动类上面加@MapperScan(basePackages = “top.zhenghy123.dao”) //dao接口包的位置一样的效果)
  2. 配置Mapper映射文件:在src/main/resources/mapper路径下加入UserMapper.xml配置文件
集成Spring Data Redis
  1. 添加Redis起步依赖
<!--spring data redis 依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 在yml中配置Redis连接信息(可以不配使用默认值)
# Redis 配置(不填也是可以的)
spring.redis.host=localhost
spring.redis.port=6379
  1. 注入RedisTemplate测试Redis操作
    @Autowired
    private RedisTemplate redisTemplate;
集成定时器
  1. 在启动类上加@EnableScheduling注解开启定时器
  2. 配置定时器方法(随便在哪个组件中添加该方法都可以)
    @Component
    public class TimerUtil {
        @Scheduled(cron = "cron表达式")
        public void mytask(){
            System.out.println(LocalDateTime.now());
        }
    }

发送HTTP请求

服务调用方式:RPC和HTTP

常见远程调用方式:

  • RPC:(Remote Produce Call)远程过程调用
    基于Socket、自定义数据格式、速度快,效率高。
    典型应用代表:Dubbo,WebService,ElasticSearch集群间互相调用。

  • HTTP:网络传输协议
    基于TCP/IP、规定数据传输格式、缺点是消息封装比较臃肿、传输速度比较慢。
    优点是对服务提供和调用方式没有任何技术限定,自由灵活,更符合微服务理念。

  • RPC和HTTP的区别:RPC是根据语言API来定义,而不是根据基于网络的应用来定义。

Spring的RestTemplate
  • RestTemplate是Rest的HTTP客户端模板工具类
  • 对基于Http的客户端进行封装
  • 实现对象与JSON的序列化与反序列化
  • 不限定客户端类型,目前常用的3种客户端都支持:HttpClient、OKHttp、JDK原生
    URLConnection(默认方式)
RestTemplate案例
  1. 创建一个springboot的工程,勾选Web的Starter
  2. 在项目启动类位置中注册一个RestTemplate对象
    @Configuration
    public class MyConfiguration {
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
  1. 在测试类ApplicationTests中 @Autowired 注入RestTemplate
  2. 通过RestTemplate的getForObject()方法,传递url地址及实体类的字节码
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ApplicationTests {
        @Autowired
        private RestTemplate restTemplate;
        @Test
        public void testREST() {
            String url = "http://baidu.com";
            String json = restTemplate.getForObject(url, String.class);
            System.out.println(json);
        }
    }
  • RestTemplate会自动发起请求,接收响应
  • 并且帮我们对响应结果进行反序列化
  1. 运行测试类中的testREST方法

SpringBoot如何代码测试

SpringBoot集成JUnit测试功能,进行查询用户接口测试。
  1. 添加Junit起步依赖(默认就有)
<!--spring boot测试依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
  1. 编写测试类:
  • SpringRunner继承SpringJUnit4ClassRunner,使用哪一个Spring提供的测试引擎都可以。
    指定运行测试的引擎
  • @SpringBootTest的属性值指的是引导类的字节码对象
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ApplicationTests {
        @Autowired
        private UserMapper userMapper;
        @Test
        public void test() {
            List<User> users = userMapper.queryUserList();
            System.out.println(users);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值