- 博客(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
原创 《精通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
原创 《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
原创 【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注解扫描-@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
原创 【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设计模式-结构型-门面模式
门面模式(也叫外观模式,Facade Pattern)在许多源码中有使用,比如 slf4j 就可以理解为是门面模式的应用。这是一个简单的设计模式,我们直接上代码再说吧。
2022-10-07 14:26:34
210
空空如也
登录CSDN后绑定微信存在CSRF攻击风险
2024-08-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅