springboot项目

发布时间:2020-06-24 20:28:03   来源:文档文库   
字号:

SpringBoot笔记

创建项目

获取配置文件中的属性值



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

1. 通过配置方式

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

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

3. 注入集合

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

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

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

Springboot自动装配

非自动装配示例如下

按条件自动装配示例如下

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

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

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

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

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

运行即可

再如

再如

两个runnable已全部加载

再如

或者

Spring boot实现异步处理

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

Springboot事件监听

流程:

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

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

3. 发布事件。

实现1

实现2

实现3

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

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

localhost:8080/register?name=liuqian&password=123

Springboot JDBC

或者

spring.datasource.type属性可以用来指定数据源,如下图

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

或者

Springboot AOP(面向切面)

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

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

解决方案如下:

方法一:

SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})

具体实现:

或者

Springboot– redis



Springboot Starter – redis

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

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



Springboot 日志

Springboot 监控和度量

自定义health

可自定义配置info

输出效果

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

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

Springboot 测试

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

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

测试bean

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

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

测试配置环境2(直接使用springEnvironment,前提是如果配置信息不在默认配置文件的话,必须先在程序包中将配置文件引入)

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

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

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

Springboot 整合mybatis

Mybatis逆向工程

Springboot 构建微服务

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

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

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



Springboot 服务的注册与发现

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

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

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

常见的注册中心:zookeeperconsuletcdredis

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

下载zookeeper https://zookeeper.apache.org/releases.html

Windows下配置zookeeper https://.cnblogs./shanyou/p/3221990.html

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

PowerShell查看节点

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

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

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

spring boot类中调用一样的。

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

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

注册方一:

注册方二:

调用方:

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

注册方一:

注册方二:

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

负载均衡类

调用类



Springboot 服务的打包和部署

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

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

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

2. 打成war包并发布

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

本文来源:https://www.2haoxitong.net/k/doc/e8154d24951ea76e58fafab069dc5022abea4699.html

《springboot项目.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式