自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(335)
  • 收藏
  • 关注

原创 《精通Spring4.x 企业应用开发实战》第20章 实战型单元测试

按照软件工程思想,软件测试可以分为单元测试、集成测试、功能测试、系统测试等。功能测试和系统测试一般来说是测试人员的职责,但单元测试和集成测试则必须由开发人员保证。单元测试:当对 UserService 这个业务层的类进行单元测试时,可以通过创建UserDao 和 LoginLogDao** 模拟对象**,在假设 DAO 类正确工作的情况下对 UserService 进行测试。集成测试:而对 UserService 进行集成测试时,则应该注入真实的UserDao 和 LoginLogDao进行测试。

2023-03-07 10:55:48 488 2

原创 【Spring学习】FactoryBean的使用

FactoryBean 接口对于 Spring 框架来说占有重要的地位,Spring 自身就提供了 70 多个FactoryBean 的实现。它们隐藏了实例化一些复杂 bean 的细节,给上层应用带来了便利。一般情况下,Spring 通过反射机制利用 bean 的 class 属性指定实现类来实例化 bean。在某些情况下,实例化 bean 过程比较复杂,如果按照传统的方式,则需要在中提供大量的配置信息,配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。

2023-03-05 23:20:13 2880

原创 《Spring源码深度分析》第5章 Bean的加载

经过前面的分析,我们终于结束了对XML 配置文件的解析,接下来将会面临更大的挑战,就是对 bean 加载的探索。bean 加载的功能实现远比 bean 的解析要复杂得多。

2023-03-05 00:34:51 1520

原创 《Spring源码深度分析》第4章 自定义标签的解析

Spring源码深度分析》持续更新中…在之前的章节中,我们提到了在 Spring 中存在默认标签与自定义标签两种,而在上一章节中我们分析了 Spring 中对默认标签的解析过程,相信大家一定已经有所感悟。那么,现在将开始新的里程,分析 Spring 中自定义标签的加载过程。【Spring学习】Spring自定义标签详细步骤i ++) {// 解析默认的标签元素 parseDefaultElement(ele , delegate);} else {

2023-03-05 00:19:19 529

原创 【Spring学习】Spring自定义标签详细步骤

Spring中除了http://www.springframework.org/schema/beans命名空间提供了默认标签,其他的命名空间的标签均为自定义标签。为了更好的理解自定义标签在Spring中是如何加载与注册的,我们现在手动写一个自定义标签。/*** @description: 定义自定义标签的属性。/*** @description: 定义自定义标签的属性。

2023-03-03 16:45:20 1876

原创 《Spring源码深度分析》第3章 默认标签的解析

《Spring源码深度分析》持续更新中…之前提到过 Spring 中的标签包括默认标签和自定义标签两种,而两种标签的用法以及解析方式存在着很大的不同,本章节重点带领读者详细分析默认标签的解析过程。至此我们便完成了对XML 文档到 GenericBeanDefinition 的转换,也就是说到这里,XML中所有的配置都可以在 GenericBeanDefinition 的实例类中找到对应的配置。

2023-03-01 10:34:07 295

原创 《Spring源码深度分析》第2章 容器的基本实现

源码分析是一件非常煎熬非常有挑战性的任务,你准备好开始战斗了吗?在正式开始分析 Spring 源码之前,我们有必要先来回顾一下 Spring 中最简单的用法,尽管我相信您已经对这个例子非常熟悉了。待补充。

2023-02-26 00:25:26 487

原创 【环境搭建】使用‘IDEA‘创建Spring项目(XML文件)

xml文件的形式,使用IDEA创建Spring项目步骤。

2023-02-25 22:44:33 1390 1

原创 《精通Spring4.x 企业应用开发实战》第1章 Spring概述

spring的概述

2023-02-21 14:58:11 1191

原创 《精通Spring4.x 企业应用开发实战》第15章 Spring Cache

精通Spring4.x 企业应用开发实战》持续更新中…伴随着信息量的爆炸式增长,以及构建的应用系统越来越多样化、复杂化,特别是伴随着近年来企业级应用互联网化的超势,缓存(Cache)对应用程序性能的优化变得越来越重要。将所需服务请求的数据放到缓存中,既可以提高应用程序的访问效率,又可以减少数据库服务器的压力,从面让用户获得更为极致的体验。

2023-02-16 22:31:35 685

原创 《精通Spring4.x 企业应用开发实战》第16章 任务调度和异步执行器

任务调度是大多数应用系统的常见需求之一,直接自己编写基于线程的调度程序,不但容易出错,而且实现难度很大。而借助巨人的肩膀,可以站得更高、看得更远:1、Quartz是任务调度领域享誉盛名的开源框架,Spring 提供了集成 Quartz 的功能,可以让开发人员以更面向 Spring 的方式创建基于 Quartz的任务调度应用。2、此外,Spring也为JDK Timer、Java 5.0 和Executor提供了有益的支持。

2023-02-16 22:20:35 349

原创 《精通Spring4.x 企业应用开发实战》第12章 Spring 的事务管理难点剖析

精通Spring4.x 企业应用开发实战》

2023-02-15 16:57:58 1250 4

原创 《精通Spring4.x 企业应用开发实战》第11章 Spring的事务管理

精通Spring4.x 企业应用开发实战》待补充。

2023-02-12 23:09:05 1158

原创 《Spring源码深度分析》持续更新中...

持续更新中...

2023-02-12 16:22:25 238

原创 《Spring源码深度分析》第8章 数据库连接JDBC

本章主要以Spring提供的模板类’JdbcTemplate‘为例,进行源代码分析。待补充。

2023-02-12 16:14:12 1383

原创 《精通Spring4.x 企业应用开发实战》第10章 Spring对Dao的支持

在日常开发中,我们习惯性的定义类似这样的目录结构:controller、service、dao。我们大多数时候给DAO层的定义是:用于DB的交互。其实,抛开DB,DAO层也是可以与其他存储介质(OSS、File…)进行交互的。所以说,请不要把DAO仅仅限制为DB交互。略。

2023-02-07 22:50:05 505

原创 【Java异常】Java异常监控重要手段 --异常链

异常链”无论是在框架源码中还是在日常项目开发中,都是一项非常重要的对异常处理的手段。以下摘抄自《Java编程思想》对异常链的介绍:常常会想要在①捕获一个异常后抛出另一个异常②并且希望把原始异常的信息保存下来,这被称为异常链。略。

2023-01-07 23:11:42 1852 3

原创 【安全漏洞】水平权限漏洞和垂直权限漏洞

权限校验非常重要。如果不对水平、垂直权限做校验,就会发生泄漏用户数据的事故,造成P0故障。

2022-12-26 18:39:38 1774 2

原创 【Spring源码系列】Bean生命周期-依赖注入

依赖注入源码:依赖注入流程:1、我们演示通过自动注入-byName的方式进行 属性依赖注入;这个name指的是UserService中set方法后面的名称,也就是setOrderService的orderService;2、通过@Bean(autowire = Autowire.BY_NAME/BY_TYPE)的自动注入方式在真正进行属性依赖注入前,会调用unsatisfiedNonSimpleProperties方法进行过滤(如果是简单类型,则不会注入。但是如果是通过@Autowired注

2022-12-04 23:40:48 434

原创 【Spring源码系列】Bean生命周期-Bean销毁

Spring给我们提供了一种当的方式。那么,Spring底层到底是如何实现的呢?接下来,我们将从源码+案例的方式来解析:spring如何实现当bean销毁时调用某个方法的。当的时候(调用close())方法的时候,那么对于实现destroy方法的bean,就会开始执行各自自定义的销毁逻辑。提示:是spring容器关闭的时候调用bean销毁逻辑,不是垃圾回收、程序意外终止、程序正常终止…的时候。1、。在‘初始化后’会对BeanDefinition进行判断,判断该BeanDefinition是否具备destr

2022-12-04 16:39:47 4467

原创 【Spring源码系列】Bean生命周期-实例化前

在Bean的生命周期中,‘实例化前’操作是借助InstantiationAwareBeanPostProcessor接口实现的。 提供的两个方法是:初始化前、初始化后。很多类实现BeanPostProcessor,且基于BeanPostProcessor类做了些扩展,比如InstantiationAwareBeanPostProcessor类,在此基础上扩展了实例化前、实例化后;1、InstantiationAwareBeanPostProcessor继承BeanPostProcessor并且在此基础上扩

2022-12-03 14:19:01 977

原创 【Spring源码系列】汇总

【Spring源码系列】

2022-12-01 22:26:38 158

原创 【Spring源码系列】Spring注解扫描-@ComponentScan底层原理解读

众所周知,@ComponentScan注解的作用是:将项目中所有被@Component注解标记的类,组装成BeanDefinition,然后以key value的形式注入到IOC容器中。

2022-12-01 22:21:38 3196

原创 【MySQL数据库】MySQL慢查询的危害

在日常开发中,数据库的查询操作是非常常见的。但是,如果MySQL数据库出现慢查询,是比较危险的,一旦有其他的DDL操作,可能会造成整个数据库的等待。

2022-11-23 20:04:20 1459 1

原创 【MybatisPlus】公共轮子

重复代码写一次就够了,剩下的交给ctrl+c和ctrl+v吧。

2022-11-12 23:25:39 145

原创 【Spring注解】@Conditional注解的使用

Conditional注解的判断条件,决定了该类是否可以成为Bean。

2022-11-06 16:06:57 598

原创 【第二剑-构建活动】代码应该怎么写?

编码时,始终牢记两个要点:1、主流程 2、异常监听。

2022-10-29 10:10:36 2018

原创 【MybatisPlus】Java代码定制化SQL与示例(持续更新...)

提高生产力。

2022-10-28 10:24:11 1478

原创 【DDL设计】操作记录表

合理的表结构设计,不仅仅让我们后面扩展表方便,还会大大提升数据库性能。

2022-10-27 22:28:40 835

原创 【RabbitMQ教程】如何看待Java原生和SpringBoot整合RabbitMQ的方式

如何看待Java原生和SpringBoot整合RabbitMQ的方式

2022-10-10 13:17:22 500

原创 【RabbitMQ教程】springboot整合rabbitmq(topic模式)

为了方便测试,我直接把生产者代码放工程测试类:发送routing key是"topic.sms.email"的消息,那么mq-rabbitmq-consumer下那些监听的(与交换机(topic.exchange)绑定,并且订阅的routingkey中匹配了"topic.sms.email"规则的) 队列就会收到消息。创建两个工程 mq-rabbitmq-producer和mq-rabbitmq-consumer,分别配置1、2、3(第三步本例消费者用注解形式,可以不用配)搭建SpringBoot环境。

2022-10-09 22:44:43 2629

原创 【RabbitMQ教程】消息堆积与消息可靠性保证

1、持久化exchange要持久化queue要持久化message要持久化2、生产方确认Confirm3、消费方确认Ack4、Broker高可用。

2022-10-09 22:31:26 1369

原创 【RabbitMQ教程】Publish/Subscribe、Routing、Topics

前面两种工作模式并没有太多的介绍‘交换机’,接下来的三种工作模式都离不开交换机的角色;

2022-10-09 16:06:09 941

原创 【RabbitMQ教程】“Hello World”工作队列模式

1、将‘Hello World工作队列模式’单独抽出来细讲,目的是借助这个模式好好讲一下rabbitmq的‘自动ACK’和‘手动ACK’。2、代码中的每一步,都演示了rabbitmq管理界面的变化;

2022-10-09 14:47:32 590

原创 【RabbitMQ教程】Work queues 工作队列模式

将‘work queues工作队列模式’单独抽出来细讲,目的是借助这个模式好好讲一下rabbitmq的‘轮询分发’和‘公平分配’。

2022-10-09 11:52:59 1093

原创 【环境搭建】借助Spring官网创建SpringBoot项目

为什么选择从spring官网创建springboot项目呢?因为公司使用的idea版本是’社区版‘(免费),社区版的idea是在创建项目的时候是没有spring Initializr选项的。

2022-10-08 12:04:53 624

原创 【RabbitMQ教程】- 实现延时队列

RabbitMQ实现延时队列有两种方式:1.死信队列 2.下载插件。默认已经安装好RabbitMQ的延时插件,接下来我们直接步入主题。(1)配置类:配置交换机、延时队列、绑定交换机&队列。

2022-10-07 19:25:56 402

原创 Java设计模式-结构型-享元模式

英文是 Flyweight Pattern,不知道是谁最先翻译的这个词,感觉这翻译真的不好理解,我们试着强行关联起来吧。Flyweight 是轻量级的意思,享元分开来说就是 共享 元器件,也就是复用已经生成的对象,这种做法当然也就是轻量级的了。复用对象最简单的方式是,用一个 HashMap 来存放每次新生成的对象。每次需要一个对象的时候,先到 HashMap 中看看有没有,如果没有,再生成新的对象,然后将这个对象放入 HashMap 中。这种简单的代码我就不演示了。

2022-10-07 14:36:55 134

原创 Java设计模式-结构型-组合模式

组合模式用于表示具有层次结构的数据,使得我们对单个对象和组合对象的访问具有一致性。

2022-10-07 14:34:12 148

原创 Java设计模式-结构型-门面模式

门面模式(也叫外观模式,Facade Pattern)在许多源码中有使用,比如 slf4j 就可以理解为是门面模式的应用。这是一个简单的设计模式,我们直接上代码再说吧。

2022-10-07 14:26:34 210

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除