springboot 系列
springboot 从零开始
架构路上
热爱技术,望有朝一日能作技术路上的指路人。
展开
-
springboot mockMvc单元测试
mockMvc配置public class TestApplication { @Autowired private WebApplicationContext context; @Bean public MockMvc setup() { return MockMvcBuilders.webAppContextSetup(this.context).build(); }}@RunWith(SpringRunner.class)@Spri原创 2021-06-03 14:17:51 · 214 阅读 · 0 评论 -
mybatis源码阅读(五) 之 mapper接口的执行流程
最终调用的是包装后的MapperMethod的execute()。原创 2021-05-26 18:16:32 · 316 阅读 · 0 评论 -
mybatis源码阅读(四) 之 mapper接口到底是什么?
MapperStatement怎么跟Dao接口对应回到之前的部分,在我们注入mapper接口时,我们会调用MapperFactoryBean的getObject()方法,且往下看:@Overridepublic T getObject() throws Exception { return getSqlSession().getMapper(this.mapperInterface);}public SqlSession getSqlSession() { return this.sqlS原创 2021-05-26 18:15:22 · 335 阅读 · 0 评论 -
mybatis源码阅读(二) 之 mapper接口为什么能被@Autowired注入?
mapper接口为什么能被@Autowired注入?紧接上文mybatis源码阅读(一)之mybatis在springboot中的入口上文聊到扫描出mapper接口,并生成BeanDefinition注册到spring容器中。众所周知,spring在初始化bean的时候,要么是反射调用构造方法,要么是使用FactoryBean去getObject()。在我们编写的业务代码中并没有实现mapper接口,所以这里必然是使用后者。下面进入正文:ClassPathMapperScanner#doScan(原创 2021-05-25 17:56:41 · 2008 阅读 · 1 评论 -
mybatis源码阅读(三) 之SqlSessionFactory是如何被初始化的?
SqlSessionFactory是如何被初始化的?原创 2021-05-25 17:53:58 · 403 阅读 · 0 评论 -
mybatis源码阅读(一) 之 springboot入口
文章所使用容器为springboot。1.mybatis入口入口一 MybatisAutoConfiguration:如果上下文中不存在MapperScannerConfigurer.class,则加载MybatisAutoConfiguration.AutoConfiguredMapperScannerRegistrar.class,该类实现了spring的ImportBeanDefinitionRegistrar接口,会在容器初始化阶段调用registerBeanDefinitions方法,注册M原创 2021-05-25 15:30:11 · 719 阅读 · 1 评论 -
springcloud系列(零)之父项目搭建(非parent方式)
parent方式1. 使用spring Initializer创建父项目pom.xml文件如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P原创 2021-03-02 19:31:22 · 217 阅读 · 0 评论 -
swagger-ui多个包路径扫描匹配(多注解匹配)的改造支持
多个包扫描路劲匹配package com.gponline.crm.web.config;import com.google.common.base.Predicates;import com.gponline.crm.web.utils.ConfigUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;impo原创 2021-02-27 20:47:01 · 1826 阅读 · 0 评论 -
springboot 连接kafka报错 java.net.UnknownHostException: xxxx
springboot 连接kafka报错java.net.UnknownHostException: 189a23b8361badvertised.listeners=PLAINTEXT://主机ip:9092原创 2021-02-21 23:13:00 · 1655 阅读 · 0 评论 -
分布式限流(三)之 redis + lua 限流
redis + lua 脚本实现分布式限流redis环境搭建,请自行百度。windows搭建lua环境,参考链接:https://blog.csdn.net/weixin_41725792/article/details/113827606redis内置了lua解释器,我们在redis中可以使用redis 关键字 eval 运行Lua代码,如下:# eval 关键字# 脚本" return { KEYS[1],ARGV[1]} " # 2 参数个数# 参数 K1 K2 ,值 V1 V2eva原创 2021-02-16 23:30:52 · 763 阅读 · 3 评论 -
sharding-jdbc自定义分片策略
UUIDspring.shardingsphere.datasource.names=db0,db1# 数据源 db0 配置spring.shardingsphere.datasource.db0.type=com.zaxxer.hikari.HikariDataSourcespring.shardingsphere.datasource.db0.driver-class-name=com.mysql.cj.jdbc.Driver# 注意 这里不是以前的urlspring.shardings原创 2021-02-14 19:57:18 · 929 阅读 · 0 评论 -
springboot - sharding-jdbc配置以及注意点
springboot 配置文件spring.shardingsphere.datasource.names=db0,db1# 数据源 db0 配置spring.shardingsphere.datasource.db0.type=com.zaxxer.hikari.HikariDataSourcespring.shardingsphere.datasource.db0.driver-class-name=com.mysql.cj.jdbc.Driver# 注意 这里不是以前的urlsprin原创 2021-02-14 16:15:28 · 974 阅读 · 0 评论 -
springboot Transaction事务的手动版(编程式事务)和自动版(声明式事务)
1.spring管理的 自动 @Transaction() 声明式事务@Transaction(rollback=Exception.class)public synchronized void test(){// 查询订单数量 queryProductCount();// 判断订单是否>0 if(){ throw Exception(); }// 更新库存 update();// 插入一条订单数据 insert();}CountDownLatch countDo原创 2021-02-03 21:56:30 · 1631 阅读 · 0 评论 -
发送邮件springboot-stater-mail
mail: username: 275554701@qq.com password: host: smtp.qq.com port: 25# 这个配置解决 阿里云等邮件无法发送问题 properties: mail: smtp: ssl: enable: true/** * 邮件接口 * * @author 贺峥 */public interface IMailBizSe原创 2021-01-12 17:56:12 · 342 阅读 · 0 评论 -
springboot动态注册Web三大组件(注解方式/代码方式)
1. 注解方式注册(1)注册 Servlet@WebServlet(name = "customServlet",urlPatterns = {"/custom"})public class CustomServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExcep原创 2020-12-11 21:14:37 · 427 阅读 · 0 评论 -
springboot 之 elasticsearch + mybatis 组件化开发
进行自动装配两种方式:使用自定义注解自定义注解 @EnableKnowledge导入真正的配置类引用模块在启动类或者其他spring管理的bean上添加注解@EnableKnowledge@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Import(ElasticSearchConfig.class)public @interface EnableKnowledge {}原创 2020-12-07 18:57:43 · 447 阅读 · 0 评论 -
springboot + dubbo 多协议/多注册中心配置
引言之前学习了dubbo,一直没有实战,今天动手了才发现,里面还是又一些坑要踩,在网上找了好多文章,挂羊头卖狗肉,搜不到有用的信息,然后自己花了一下午时间,一个个慢慢调配,在此留个记录,希望大家少走点弯路。新建三个项目:各位都是有经验的开发人员,新建项目我就不做赘述了。父工程 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</原创 2020-11-18 18:08:02 · 1978 阅读 · 0 评论 -
springboot elasticsearch最新api使用详解
基于spring-boot-starter-data-elasticsearch 2.3.4该版本已废弃ElasticsearchTemplate,至于为什么会废弃,我个人认为 rest client性能更高,封装更好,用户无需再关注RestClient客户端和InternalRequest请求,这一切ES都帮你干了。在项目中使用如下配置会抛出异常@AutoWiredElasticsearchTemplate elasticsearchTemplate;该版本使用 ElasticsearchRe原创 2020-10-28 18:35:39 · 1115 阅读 · 0 评论 -
tomcat深入学习(二)(1) ---- tomcat初始化
tomcat的初始化流程:现阶段,我们使用tomcat有两种方式:官网下载tomcat,将web项目打成war包部署到tomcat的webapps目录下,具体使用请参考添加链接描述。这种方式启动时通过点击startup.bat,其底层是调用名为Bootstrap.class的main方法。public final class Bootstrap { public static void main(String args[]) { synchronized (daemonLoc原创 2020-11-10 18:38:05 · 357 阅读 · 0 评论