spring boot整合(1)

 

目录

spring boot的日志管理

使用log4j

整合freemark

整合QuartZ(定时任务)

整合jdbcTemplate

整合mybatis

mytatis的其它配置

Mapper接口注解

mytatis注解方式需要在启动类注解@MapperScan(无用)

mytatis总结

整合pagehelper

spring boot切换数据源

通用mapper

整合Junit

整合spring data jpa

整合redis

redis集群

整合activeMQ

整合solr

整合elasticsearch

整合rabbitMQ


前言

spring boot的整合其实在官方都有相关的代码示例,这就只是挑一些常用的并且用自己的语言概述

spring boot基础   https://blog.csdn.net/yzj17025693/article/details/89577324

spring boot 进阶   https://blog.csdn.net/yzj17025693/article/details/90601997 

spring boot全配置整理  https://blog.csdn.net/acmman/article/details/81835911

 

spring boot的日志管理

如果需要深入或者使用自定义配置文件  可以参考 https://www.cnblogs.com/bigdataZJ/p/springboot-log.html

spring boot整合(1)_第1张图片

spring boot整合(1)_第2张图片

spring boot整合(1)_第3张图片

#logging.level.root表示只输出INFO 及以上的级别的信息,也就是debug不会输出

#还可以在level后面加上包名,表示输出这个包里的信息

logging.level.root=INFO     

logging.level.com.tiandi.springbootdemo=WARN

spring boot整合(1)_第4张图片

 

使用log4j

spring boot整合(1)_第5张图片

 

输出日志

spring boot整合(1)_第6张图片

还可以直接添加注解,上面的LoggerFactory就可以删了,并且log这个变量还在

spring boot整合(1)_第7张图片

 

 

日志文件一般配置

# priority  :debug> Method: %l ]%n%p:%m%n
#debug log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.debug.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.debug.File=./src/com/hp/log/debug.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.layout=org.apache.log4j.PatternLayout 
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#warn log
log4j.logger.warn=warn
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.warn.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.warn.File=./src/com/hp/log/warn.log
log4j.appender.warn.Append=true
log4j.appender.warn.Threshold=WARN
log4j.appender.warn.layout=org.apache.log4j.PatternLayout 
log4j.appender.warn.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#error
log4j.logger.error=error
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.error.File = ./src/com/hp/log/error.log 
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR 
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n

 

 

整合freemark

freemark基础  https://blog.csdn.net/yzj17025693/article/details/90479000

添加起步依赖

spring boot整合(1)_第8张图片

定一个一个模版,模版只要在resources下的templates下,那么会自动加载

spring boot整合(1)_第9张图片

spring boot整合(1)_第10张图片

这时候只需要在对应的model里添加数据即可,model的底层其实还是request

所以在request里添加也行

这个类的注解必须是Controller,而不是RestController,因为RestController是返回的是json数据

freemark貌似不能自行解析

但是使用RestController和返回ModelAndView没有问题,因为ModelAndView是视图层和数据层的结合

spring boot整合(1)_第11张图片

但是如果没有放到templates文件夹下,就需要设置全局配置

1 cache是用不用缓存,allow-request-override是否允许request溢出,因为request可能会存太多的值

2 text/html是模版的格式,UTF-8是模版的字符集

spring boot整合(1)_第12张图片

spring boot整合(1)_第13张图片

 

 

整合QuartZ(定时任务)

QuartZ基础  https://blog.csdn.net/yzj17025693/article/details/85028139

spring Task基础 https://blog.csdn.net/yzj17025693/article/details/90549071

直接在方法上使用@Scheduled

fixedRate是固定的时间

而cron是表达式形式

spring boot整合(1)_第14张图片

还需要在启动类上加上@EnableScheduling

 

整合jdbcTemplate

spring boot整合(1)_第15张图片

可以在dao层直接注入jdbcTemplate

spring boot整合(1)_第16张图片

 

整合mybatis

连接池的配置在spring boot整合(2)里https://blog.csdn.net/yzj17025693/article/details/90741917

添加mytatis提供的起步依赖

spring boot整合(1)_第17张图片

添加mysql驱动,并不需要导入版本,因为spring boot已经管理了

spring boot整合(1)_第18张图片

datasource的其它配置百度即可

spring boot整合(1)_第19张图片

spring boot整合(1)_第20张图片

spring boot整合(1)_第21张图片

spring boot整合(1)_第22张图片

 

mytatis的其它配置

本来spring和mytatis整合后,mytatis的核心配置文件里的datasource和sqlsesion工厂都交给了spring

扫描mapper 也用动态代理给替换了

而现在数据库配置交给了spring boot, mytatis的核心配置也交给spring boot

只需要扫描别名

别名是为了在xml里配置返回值的时候,不需要加上全部路径

spring boot整合(1)_第23张图片

 

Mapper接口注解

在接口上使用Mapper注解,这样就代替了扫描mapper接口的动态代理

 

mytatis注解方式需要在启动类注解@MapperScan(无用)

这个就是相当于ComponentScan,当在mapper接口上写了@Mapper,那么这个注解彻底无用

 

mytatis总结

不设置@mapperScan和mapper接口上不写@Mapper的情况下
并且不在同一个文件夹下
只需要设置mapper-locations: classpath:mapper/*Mapper.xml
即使mapper接口和配置文件不同名也可以扫描到并使用,这很神奇

当注释掉mapper-locations后
那么当接口和映射文件在同一个目录的时候,只需要在mapper接口上写@Mapper即可
不需要写@mapperScan

还需要注意的是

使用idea注入mapper,这里的红线其实是正确的,因为我们使用的是动态代理

mytatis会自动创建实现类,但是那是启动之后,所以idea识别不了

spring boot整合(1)_第24张图片

 

 

整合pagehelper

pagehelper 基础 https://blog.csdn.net/yzj17025693/article/details/89435016

第1 设置数据库类型  第2 reasonable是分页合理化参数

后面2个不写应该是不会出错的

count是计数的,统计数量的,因为pagehelper会返回一个总记录数

spring boot整合(1)_第25张图片

spring boot整合(1)_第26张图片

 

spring boot切换数据源

spring boot使用注解的方式来配置数据源,如果有多个sqlsessionFactory,需要加上@Primary注解

spring boot使用注解的方式,需要在类上使用@Configuration,具体的写法和一开始使用mytatis创建的方式一样

只不过现在拆分了

spring boot整合(1)_第27张图片

datasource

spring boot整合(1)_第28张图片

session工厂

spring boot整合(1)_第29张图片

事务管理器

spring boot整合(1)_第30张图片

sql模版

spring boot整合(1)_第31张图片

 

通用mapper(参考百度)

以前我们还需要写findById之类的,现在直接使用通用mapper插件,并且不用配置mapper-locations

思想比较像spring data jpa

spring boot整合(1)_第32张图片

通用mapper还有一个专门操作id的

批量插入的

 

这时候的mapperScan就有用了,用的是插件的mapperScan

spring boot整合(1)_第33张图片

实体类的编写

参考spring data  jpa  https://blog.csdn.net/yzj17025693/article/details/89514504

keySql是回显id

spring boot整合(1)_第34张图片

如果想把某个字段不作为数据的字段,那么使用Transient(瞬间)

条件查询

spring boot整合(1)_第35张图片

 

 

整合Junit

spring boot整合(1)_第36张图片

@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

现在是spring boot,就是springRunner.class

本来@RunWith的下面是contextConfigLocation然后指定application.xml的位置

现在是springBootTest,是指定启动器的位置,因为启动器会给你自动加载配置文件

spring boot整合(1)_第37张图片

 

整合spring data jpa

spring data jpa的配置文件在META-INF下叫persistence(持久化).xml

并且数据库连接信息也在里面,但是和spring整合后便没有了这个配置文件

现在和spring boot整合

spring boot整合(1)_第38张图片

如果数据库和表的名称一致,只需要注解一下实体类,并且配置一下id,其他属性如果名称也和数据库一致,那么不用配置

但是需要配置 hibernate.cfg.ImprovedNamestrategy,这些都是spring data  jpa的知识,并不是spring boot的

spring boot整合(1)_第39张图片

ddl是 是否生成数据库的表,ImprovedNamestrategy是映射策略

spring boot整合(1)_第40张图片

这个UserRepository类是我们自己写的,继承了jpaRepository(封装了常用的CRUD)和jpaSpecificationExecutor(封装了复杂的查询) 

spring boot整合(1)_第41张图片

如果你使用的是jdk9,那么还需要导入一个jar包

spring boot整合(1)_第42张图片

通用的分页查询

spring boot整合(1)_第43张图片

 

 

整合redis

spring data redis的基础  https://blog.csdn.net/yzj17025693/article/details/89680347

和后面的pool开头的可以省略

datasource是代表redis的第1个数据库

spring boot整合(1)_第44张图片

redis的缓存可以参考  https://my.oschina.net/u/3452433/blog/1831026

直接可以使用spring data redis的模版

spring boot整合(1)_第45张图片

spring boot整合(1)_第46张图片

 

redis集群

只需要把nodes全写上去,然后传入到JedisCluster

spring boot整合(1)_第47张图片

spring boot整合(1)_第48张图片

 

整合MongoDB

MongoDB基础  https://blog.csdn.net/yzj17025693/article/details/89888812

spring boot整合(1)_第49张图片

spring boot整合(1)_第50张图片

 

 

整合activeMQ

添加起步依赖

spring boot整合(1)_第51张图片

标准配置文件

spring boot整合(1)_第52张图片

消费生产者

这个JmsMessagingTemplate其实spring jms进一步封装,在spring 4.1之后出现的

其余的配置spring boot已经给你配置好了

spring boot整合(1)_第53张图片

convertAndSend的第一个参数Destination(目的地),由ActiveMQQueue创建返回

 

消费者

方法上直接使用@JmsListener就能实现监听,这是spring boot的功能

2个都运行之后会发现能获取信息,但是现在还有一个关键的就是本来应该还需要 一个activeMQ的服务的

这个服务在linux上,然后能查看有哪些消息,是因为spring boot里内置了服务,如果想要修改可以进行配置

spring boot整合(1)_第54张图片

修改配置文件

 

整合solr

solr基础 https://blog.csdn.net/yzj17025693/article/details/90442002

spring boot整合(1)_第55张图片

spring boot整合(1)_第56张图片

 

整合elasticsearch

elasticsearch基础   https://blog.csdn.net/yzj17025693/article/details/89636313

spring boot整合(1)_第57张图片

spring boot整合(1)_第58张图片

 

整合rabbitMQ

rabbitMQ基础 https://blog.csdn.net/yzj17025693/article/details/90739420

spring boot整合(1)_第59张图片

virtualBost是虚拟机,每个虚拟机相当于独立的mq

spring boot整合(1)_第60张图片

创建配置类,声明交换机路由

这里声明的是topic通配符交换器

spring boot整合(1)_第61张图片

还有其它的可以声明

spring boot整合(1)_第62张图片

声明队列

spring boot整合(1)_第63张图片

创绑定交换机,指定路由,noargs是不需要指定参数

@Qualifier 是按名称注入

spring boot整合(1)_第64张图片

 

 

发送消息

convertAndSend,第一个参数是交换器,第二个参数是routing key,第3个参数是message

这里是可变参数还有很多重载参数,可以如果是点对点模式(不用交换机),第一个直接填消息队列即可

spring boot整合(1)_第65张图片

 

监听消息

只需要在方法上加上监听的注解,想要拿到哪个数据,就写上对应的参数即可

Message也能拿到消息

spring boot整合(1)_第66张图片

完整的应该是这样,因为如果队列不存在,就会报错了

不过一般不需要这么写

spring boot整合(1)_第67张图片

publisher-confirs 是确定生产者

template是模版的参数,retry是重试的信息

如果发送失败了,就重试

10000是10秒   第1次失败后等10秒后重试,重试2次,第二次是20秒,第3次是40秒,但是不会有第3次

因为最大周期是30秒,multiplier 就是倍数

spring boot整合(1)_第68张图片

你可能感兴趣的:(java,web)