
Spring
文章平均质量分 62
倚楼听风夜听雨
这个作者很懒,什么都没留下…
展开
-
BeanFactoryPostProcessor的作用可不仅仅是修改Bean定义
一说到 BeanFactoryPostProcessor,很多人的第一反映就是他可以修改Bean定义,对,他是可以修改Bean定义,然而,他的作用仅限于修改Bean定义吗?显然不是,他是Spring提供的一个扩展点,解耦的一个手段,下面仔细说一下:先说下他是怎么修改Bean定义的@FunctionalInterfacepublic interface BeanFactoryPostProcessor { void postProcessBeanFactory(ConfigurableListab原创 2020-09-25 18:01:17 · 2259 阅读 · 0 评论 -
@Autowired 写在属性和构造函数上的区别
下面是@Autowired的作用域@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})构造方法方法参数属性注解类型本文主要介绍一下,写在构造方法和属性上的区别,举一个例子来说明@Componentpublic class C2 { public void say(){ S原创 2020-09-24 11:13:55 · 2957 阅读 · 0 评论 -
BeanFactory 和 ApplicationContext的区别
BeanFactory 是顶级接口ApplicationContext 继承于BeanFactory , 都具有生产Bean的能力,但BeanFactory不具备包扫描的能力ApplicationContext 具有更多的功能,事件发布等,服务非常好BeanFactory 就是一个无情的生产机器,没有其他服务,只能通过下面的方式去注册Bean定义,生产BeanDefaultListableBeanFactory defaultListableBeanFactory = new DefaultList原创 2020-09-22 14:22:41 · 190 阅读 · 0 评论 -
最简单易懂的Spring boot,mybatis,sharding jdbc 分库分表教程
网上的基于配置文件的文章太多了且有些写的乱七八糟对新手极为不友好,本篇文章采用 全部 Java 编码的方式,来实现数据的分库分表,并力求做到简单明了工具准备安装Spring boot,我这里是通过idea安装, java8,maven这里采用mybatis逆向工程生成代码,生成插件选择Maven连接池采用阿里巴巴的Druid安装依赖pom文件如下,主要依赖有,mybatis-spring-boot-starter,druid-spring-boot-starter,sharding-jdbc原创 2020-08-31 10:40:16 · 425 阅读 · 0 评论 -
Spring boot 结合 Mybatis , 并用Mybatis逆向工程生成Model
先用Idea 安装Spring boot安装完,用以下内容替代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/POM/4.0.0 http原创 2020-08-26 10:53:57 · 366 阅读 · 1 评论 -
从源码角度看 Spring Bean 的创建时机
先说结论非懒加载的单例Bean在容器创建的过程中就创建好了多例或者懒加载的在使用的时候创建废话少说,上源码// Instantiate all remaining (non-lazy-init) singletons. 实例化所有剩余的(非懒加载的)单例finishBeanFactoryInitialization(beanFactory);// Trigger initialization of all non-lazy singleton beans...触发所有非懒加载单例bean的原创 2020-08-22 14:06:06 · 273 阅读 · 0 评论 -
Spring 源码编译遇到的坑
系统 : Macidea版本 :2019.3gradle :两个版本,4.10.3 和 5.5.1Spring 版本:v5.1.17.RELEASE按照官方给的说明:下载源码,先不要打开,进入源码目录,执行 ./gradlew :spring-oxm:compileTestJava,这个时候它会自动下载gradle 4.10.3 (好吧,我得承认,前前后后,gradle的版本我下载了n个, Spring 的源码版本我也下载了n个, 只有这个编译通过了)导入项目 Impor..原创 2020-08-22 14:04:43 · 1240 阅读 · 0 评论 -
java & 0xff
最近在tcp的基础上写一个自定义的协议,处理拆包粘包的时候发现一个情况数据是以字节流的形式在tcp中传输,所以,大于一个字节的数据类型,都要转为byte[] 的形式以int类型举例,在java中一个int类型的数据占4个字节,也就是需要new byte[4] int a = 9071; byte[] bytes = new byte[4]; bytes[0] = (byte) (a >> 24 ); // 拿到最高位的8位 b原创 2020-08-22 14:02:47 · 738 阅读 · 2 评论 -
Spring 是如何解决循环依赖的
一般想到这个问题,答案就是三级缓存,那么问题又来了,缓存的啥?用啥缓存的?为啥是三级不是二级?三级缓存指的其实就是三个Map。源码如下图/** Cache of singleton objects: bean name to bean instance. */private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);/** Cache of singleton fact原创 2020-08-22 14:01:40 · 243 阅读 · 0 评论 -
tomcat 在Spring boot 中的启动时机
之前遇到一个问题,我们需要在Spring Boot 启动后做一些配置表刷新的工作,这个刷新比较耗时于是,我们实现了 xxRunner implements CommandLineRunner但发现一个问题,配置还未刷新,tomcat就对外服务了近来正在阅读源码,在源码里找到了答案简单来看,Tomcat 在 refreshContext 的时候便创建了,而 CommandLineRunner 的调用却在最后。但在 onRefresh 的时候,tomcat 只是完成了注册操作,并没有真的启动,真原创 2020-08-21 14:52:45 · 490 阅读 · 0 评论