您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页springboot项目

springboot项目

来源:华佗小知识
 SpringBoot笔记 创建项目

1

获取配置文件中的属性值

2

3

修改配置文件名和文件路径(可指定多个文件或者路径)

1. 通过配置方式

4

2. 通过编码方式(用这种比较好些)

5

上图是两种方式,上面一种是加载一个文件,下面一种是加载多个文件

6

3. 注入集合

要注意的是:在注入集合的时候,代码中的集合一定要有get和set方法,并且集合名要和除前缀之外的属性名相同。在初始化的时候,spring boot就会去上述两种情况加载的文件中去找前缀是ds的属性。

下面的@ConfigurationProperties注解中有两个属性,一个是prefix即前缀,一个是locations即本地文件路径。如果只写前缀,那么prefix=可以省略,此时会从已加载的配置文件中去找对应的属性,如果指定locations的话,prefix=也不能省略,此时会从locations指定的文件中去找对应的属性。

7

不同的环境读取不同的配置文件

8

Springboot自动装配

非自动装配示例如下

9

按条件自动装配示例如下

10

11

特别注意:@Conditional注解可以用在方法上,也可以用在类上,如果用在方法上,则表示只对方法自动装配,如果用在类上,则表示对该类下所有方法都进行自动装配,如下面的@Conditional注解就表示当Utf8Condition中的方法返回true时对该类中的所有方法都进行自动装配。

因为@Conditional注解接收的参数是一个数组,一次可以传多个Condition,下图所示就表示当Utf8Condition和GbkCondition都返回true时才对该类下的所有方法进行自动装配:

12

Spring Boot还给我们提供了一些很好用的按条件自动装配的类,在包下面,可以自行研究下,下面演示两个常用的。

如@ConditionalOnProperty是与属性配合使用的,@ConditionalOnClass与类配合使用,@ConditionalOnBean与bean配合使用,示例如下

默认配置文件中加上如下属性:

13

运行即可

再如

再如

14

两个runnable已全部加载

再如

或者

15

Spring boot实现异步处理

Spring boot自动装配没有加注解的bean

16

Springboot事件监听

流程:

1. 自定义事件,一般是继承ApplicationEvent抽象类;

2. 定义事件,有多种实现方式,并且对同一个事件可创建多个;

17

3. 发布事件。

实现1:

实现2:

18

实现3:

19

具体实例(用户注册,插入数据库并邮件通知):

20

21

上述程序启动之后再浏览器中输入如下地址访问,就会在控制台打印出相关信息:

JDBC

22

或者

23

属性可以用来指定数据源,如下图

事物:要注意:可以在注解后面的括号中设置事物,自行学习

或者

24

Springboot AOP(面向切面)

Aop用途:日志记录、权限处理、性能统计、监控、事务处理、异常处理等。

首先在测试启动时候遇到一个错误,报错如下:错误

解决方案如下:

方法一:

25

@SpringBootApplication(exclude= {})

具体实现:

26

27

或者

Springboot– redis

28

29

Springboot Starter – redis

有两种方式:一种时直接在项目中引入Jedis依赖包,直接使用Jedis,另一种时引入spring-boot-starter-data-redis。下面的示例时直接使用Jedis。

30

下图中红色框里的内容时在使用Jedis连接成功redis之后进行的密码验证,如果设置了redis无需密码登陆,则不需要在代码中设置。

31

Springboot 日志

Springboot 监控和度量

自定义health

32

可自定义配置info

输出效果

除了上述信息之外,还可以将监控信息输出到jmx(如等)或者redis。

对于监控测量更详细的信息可以参照官方说明文档

Springboot 测试

33

特别注意:上述测试类中为啥要加classes=的原因:因为SpringBoot默认扫描启动类所在包以及子包中所有bean的,所以在测试类中需要加上。

如果某个bean只有测试路径下有,而项目路径下没有,则还需要把测试路径下的该bean加到classes后面去。

测试bean

想要让测试包中的bean生效,还需要手动加入到容器中

34

测试配置环境1(使用程序包中的环境类MyConfig来测试)

测试配置环境2(直接使用spring的Environment,前提是如果配置信息不在默认配

35

置文件内的话,必须先在程序包中将配置文件引入)

如果在测试之前要进行一些变量或者对象的初始化时,就用@Before注解

36

测试Controller方式1(用这种方式测试的话会加载整个spring容器)

37

测试Controller方式2(这种方式就是普通SpringMvc中Controller的测试方式,不会加载整个spring容器,因此有必要配置自动扫描的包)

Springboot 整合mybatis

38

Mybatis逆向工程

39

40

Springboot 构建微服务

所谓为服务,就是将一个项目按照功能模块拆分成多个功能单元,每个功能单元都可以自行选用不同的技术来完成。这样做方便并行开发、测试以及维护。

下图时产品微服务,使用spring boot开发

41

下图时调用为服务接口的示例

42

Springboot 服务的注册与发现

1. 注册方(服务提供方)

服务注册方(提供接口)需要引的jar包(一定要注意版本不能太高,否则会报错)

服务调用方需要引用的jar包(一定要注意版本不能太高且与服务注册放一致,否则会报错)

43

常见的注册中心:zookeeper,consul,etcd,redis

流程:1. 服务器提供方去要在启动服务的时候,把服务器的信息(ip,port)注册到注册中心(在示例中使用的时zookeeper)。2.

下载zookeeper 在Windows下配置zookeeper 配置地址:(特别要注意,再服务发现的程序配置文件中也要配置该地址)

44

用PowerShell查看节点

2. 发现方(服务调用方)

(如果是使用springbooot的话可以使用如下配置,这个配置也可直接在代码中写死)

普通类中调用服务(下面是测试的main方法,实际项目中可以用在任何方法中,可进行封装)

45

在spring boot类中调用一样的。

3. 当有多个注册方的时候,多个注册方的名称可以一样,也可以不一样,如果名称一样,则调用方可通过ip和端口号来判断是哪个注册方,如果名称不一样,则调用方可直接通过名称来发现注册方。

多个注册方名称不一致的情况

注册方一:

46

注册方二:

47

调用方:

48

多个注册方名称相同的情况:这种情况一般是将同一服务程序跑在不同服务器上,可设置相同或者不同的端口号,用来做负载均衡。

注册方一:

49

注册方二:

50

调用方(实现简单的负载均衡):

负载均衡类

51

调用类

52

Springboot 服务的打包和部署

1. 打成jar包并部署: 双击package,将项目打包(要注意:这种方式需要在服务器上安装jdk环境)

在项目的target目录下找到jar包复制出来,并在要部署程序的服务器上新建一个目录,将jar包放在里面

53

用命令 java -jar + jar包路径来启动程序,如果想指定spring boot的jar包运行的jvm内存,可用命令 java -Xms10m -Xmx200m -jar 。如果采用服务方式启动,通过自定义spring boot脚本并使用JAVA_OPTS=-Xmx=16m -Xmx=48m

54

2. 打成war包并发布

3. 打包成可执行文件并发布

55

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务