我们都知道Spring在创建一个bean的时候,还要去填充bean的属性大致流程如下:反射创建bean——createBeanInstance填充bean——populateBean初始化bean——initializeBean(包括前后置增强)注册bean的销毁方法——registerDisposableBeanIfNecessary这个填充bean的逻辑是在populateBean中prote
filter是Java8 Stream的方法:Stream filter(Predicate<? super T> predicate)返回由与此给定谓词匹配的此流的元素组成的流。removeIf是Java8 Collecttion的一个默认方法。default boolean removeIf(Predicate<? super E> filter)删除满足给定谓词的这个
在查询数据库时,如果你想知道一个列(例如:用户注册年限 USER_AGE)是否为 NULL,SQL 查询语句该怎么写呢?是这样:SELECT * FROM TABLE WHERE USER_AGE = NULL还是这样?SELECT * FROM TABLE WHERE USER_AGE IS NULL当然,正确的写法应该是第二种(WHERE USER_AGE IS NULL)。但为什么要这样写呢
在实际的业务开发中,我们经常会碰到BO、PO、DTO等对象属性之间的赋值,当属性较多的时候我们使用get,set的方式进行赋值的工作量相对较大,因此很多人会选择使用spring提供的拷贝工具BeanUtils的copyProperties方法完成对象之间属性的拷贝。通过这种方式可以很大程度上降低我们手动编写对象属性赋值代码的工作量,既然它那么方便为什么还不建议使用呢?我总结为以下几点:属性类型不一
答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:@Controller public class ScopeTestController { private int num = 0; @RequestMapping("/testScope") public void testSc
先说大致的结论(完整结论在文末):在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort,导致sql执行效率低下。基于这个结论,你可能会问:为什么在语义相同,有索引的情况下,grou
1前言在日常的开发过程中,经常会遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。在这样的场景下,使用策略和模板模式的结合可以很好的解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环节可以这样操作,在项目角度就无法一眼洞穿其中的环节和逻辑。在本文中,将引入规则引擎从全局角度来解决这个问题,这就是今天要介绍的主角 liteflow。2liteflow 规则引擎lit
MybatisX 是一款基于 IDEA 的快速开发插件,方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作,提高开发速率。使用MybatisX的好处节省大量持久层代码开发时间强大的功能为业务编写提供各类支持配置简单,告别各类复杂的配置文件如何使用MybatisX?1.创建一个简单的数据库2.创建一个简单的Springboot工程3.在pom.xml文件中引入mybatis
面试的时候,被问到 “Spring Boot 中的监视器是什么?有哪些功能和作用?”我的第一反应就是,不应该是监听器和拦截器吗?监听器是基于观察者模式的实现,其工作原理是通过注册监听器来订阅特定的事件,当这些事件发生时,Spring框架会通知所有注册了对应事件的监听器,然后监听器会执行相应的操作。比如初始化数据、读取配置文件、记录日志等。具体的操作步骤:定义一个事件类,它需要继承自Applicat
一、前言SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud等),那就更大了。这个时候如果想要对线上运行工程有一些微调,则非常痛苦二、瘦身前的Jar包Tomcat在部署Web工程的时候,可以进行增量更新,SpringBoot也是可以的~Sp
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号