自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ConstXiong

记录编程实践...

  • 博客(27)
  • 资源 (7)
  • 收藏
  • 关注

原创 Bean 何时被 GC

当一个对象要被 JVM 垃圾收集器回收掉时会执行对象的finalize 方法,所以 User 类对该方法进行重写package constxiong;public class User { @Override protected void finalize() throws Throwable { System.out.printf("我(id:%d)要被 gc 回收了", id); super.finalize(); } private Integer id; pri.

2021-02-26 10:40:18 360

原创 Spring Bean 延迟加载

Spring 中可以在 xml <bean> 中配置参数lazy-init="true" 可以使用@Lazy 注解标记 Bean 需要延迟加载延迟加载的优缺点很明显:提升系统的启动速度,按需要加载 Bean 节约了内存 但不符合 fast-fail 原则,如果系统已经启动完成,在后期的使用过程加载 Bean 出现异常情况比如内存不够,那对系统后期的正常使用影响很大所以需酌情使用。示例代码:spring xml 配置<?xml version="...

2021-02-25 09:59:57 836 1

原创 ObjectFactory 与 BeanFactory 的区别

ObjectFactory 与 BeanFactory 都提供查找实例的能力。按照单词理解ObjectFactory 是对象的工厂 BeanFactory 是 Bean 的工厂ObjectFactory接口通常用于封装一个通用的工厂。仅关注一个或一种类型的对象的生产(查找)。ObjectFactoryCreatingFactoryBean 可以实现 Bean 的延迟加载;TargetBeanObjectFactory 是其静态内部类,实现了 ObjectFactory 接口,用于生产 ta.

2021-02-24 00:18:14 512

原创 Bean 销毁的方式与顺序

Bean 的销毁方式:@PreDestroy 注解作用于方法 实现 DisposableBean 接口,复写 destroy 方法 自定义 destroyMethod:xml <bean destroy-method="beanDestroy">属性、@Bean(destroyMethod = "beanDestroy")、BeanDefinitionBuilder#setDestroyMethodName示例代码:spring 配置文件<?xml version="1

2021-02-23 21:44:48 608 1

原创 Bean 初始化的方式与顺序

Bean 在实例化完成后,可以配置初始化,方式如下:@PostConstruct 注解作用于方法 实现InitializingBean 接口,复写afterPropertiesSet 方法 自定义 initMethod:xml <bean init-method="init">属性、@Bean(initMethod = "init")、BeanDefinitionBuilder#setInitMethodName示例代码:spring 配置文件<?xml ve...

2021-02-23 09:07:29 961 1

原创 Bean 的实例化方式

Bean 的实例化方式构造方法 静态工厂 Bean 工厂 FactoryBean SPI,org.springframework.beans.factory.serviceloader.ServiceLoaderFactoryBean AutowireCapableBeanFactory#createBean BeanDefinitionRegistry#registerBeanDefinition...xml 方式,演示实例化方式spring 配置文件<?xml.

2021-02-22 00:35:50 213 3

原创 Bean的注册方式

Bean 的注册方式:xml <bean> @Bean 注解 @Component 及其派生出来的注解 @Service、@Controller、@Repository;其他规范类似功能的注解,@Resource、@Inject @Import BeanDefinitionRegistry#registerBeanDefinition BeanDefinitionReaderUtils#registerWithGeneratedName AnnotatedBeanDefiniti

2021-02-22 00:02:37 393

原创 什么是 BeanDefinition?

BeanDefinition 是定义 Bean 的配置元信息接口,包含:Bean 的类名 设置父 bean 名称、是否为 primary、 Bean 行为配置信息,作用域、自动绑定模式、生命周期回调、延迟加载、初始方法、销毁方法等 Bean 之间的依赖设置,dependencies 构造参数、属性设置...BeanDefinition 子类方法更为丰富些。派生出AnnotatedBeanDefinition 接口,以及常用子类RootBeanDefinition、Gene...

2021-02-21 08:02:41 14035

原创 Spring IoC 容器启动时做了什么?

BeanFactory 是 Spring IoC 容器的底层实现,以 XmlBeanFactory 为例XmlBeanFactory 构造方法需要Resource 对象 XmlBeanDefinitionReader#loadBeanDefinitions 方法解析xml Resource、获取和注册BeanDefinition代码入口:public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) thro...

2021-02-20 23:27:13 272

原创 BeanFactory 与 FactoryBean 的区别

BeanFactory 是 IoC 底层容器;FactoryBean 是 创建 Bean 的一种方式,帮助实现复杂的初始化逻辑。看个例子:User.javapackage constxiong;public class User { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this

2021-02-18 09:28:07 367 2

原创 BeanFactory 与 ApplicationContext 的区别

BeanFactory 是 Spring IoC 容器的底层实现;ApplicationContext 拥有 BeanFactory 的所有能力,还提供了Easier integration with Spring’s AOP features Message resource handling (for use in internationalization) Event publication Application-layer specific contexts such as the

2021-02-18 08:57:56 232 2

原创 Spring IoC 依赖注入的实现方式

上一篇,用 setter 方式举例说明了 Spring 中的依赖注入支持的数据类型。这篇,看看依赖注入的实现方式。首先,bean 的配置文件可以通过 xml 和 properties 两种方式。其中 xml 是主流,properties 基本不用,具体实现方式: setter方法 构造器 接口回调 注解 API xml 配置文件<?xmlversion="1.0"encoding="UTF-8"?><...

2021-02-16 22:13:58 253

原创 Spring IoC 依赖注入(支持哪些数据类型?)

Dependency Injection,依赖注入。 对象之间依赖关系的管理交给 Spring 维护; 是实现控制反转的方式之一; 可以降低程序之间的耦合(依赖关系)。 Spring 实现的 IoC 容器中,基本类型和对象都可以注入,按配置细节区分: Java 基本类型 String bean Spring 自建 bean(未自己申明的 bean,可以通过 getBean 方法获取到) 非 bean(无法通过 getBean .

2021-02-16 21:50:07 524 1

原创 Spring bean 依赖查找

Spring bean 的依赖查找,可以 根据名称查找 根据类型查找单个和所有 bean 根据 名称 + 类型 查找 根据注解查找 延迟查找 配置文件<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XM...

2021-02-16 21:47:09 661

原创 Spring-IoC

这个话题经常被问,但真有去追一追其发展史的不多。IoC,Inversion of Control,控制反转,是面向对象编程中的一种设计原则,用来降低代码的耦合度。最通俗易懂的理解就是,本来由程序员写代码创建和组装类及依赖对象的控制权,反转交给容器去控制。IoC 并非 Spring Framework 特有,也有一些其他的 IoC 开源框架如 Apache Avalon、PicoContainer、Google Guice;只是 Spring 被大量使用,其 IoC 的功能也被熟知。...

2021-02-16 21:05:22 137

原创 Spring 的核心特性

Spring 框架现在已经是一个庞大的生态,在入门 Java 没多久我就尝试过读 Spring 的源码,按能抽出整块时间读源码去算的话,有 3 次;《Spring 源码深度解析》这本书也看了一遍多,但收获一般。现在脑子里印象最深刻的就是 IOC 容器XML 解析成bean那部分 AOP 切面的实现 Spring MVC 如何做到从Http 请求通过 @Controller、@RequestMapping 注解找到对应的方法并返回视图或写出文本 我可以在 ...

2021-02-10 10:31:57 525 3

原创 mysql-8.0.21-winx64 集群-主从配置

主:172.31.32.1841、授权所有用户可以连接主节点update user set host='%' where user='root';flush privileges;2、主节点在 my.ini 文件新增配置server-id=1log-bin=mysql-bin3、重启服务net stop mysqlnet start mysql4、为从节点创建账号同步账号,授权CREATE USER 'slave'@'%' IDENTIFIED...

2021-02-03 08:56:20 315 2

原创 mysql-8.0.21-winx64 安装

MySQL windows 64 bits 下载文件地址https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.21-winx64.zip1、解压2、初始化脚本 my.ini,放到 mysql 的解压目录,与 bin 目录平级# 设置3306端口port=3306# 设置mysql的安装目录basedir=E:installmysql8product# 设置mysql数据库的数据的存放目录#datadir=E:installmy.

2021-02-03 08:07:03 243

原创 Java 8 Stream API Demo

package constxiong;import java.util.Arrays;import java.util.DoubleSummaryStatistics;import java.util.List;import java.util.stream.Collectors;import java.util.stream.IntStream;import java.util.stream.Stream;/** * Stream api */public class Test .

2021-02-02 23:06:47 208

原创 Druid 使用

pom.xml<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://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.

2021-02-02 21:56:33 211

原创 借助 libreoffice,word 转 pdf 体验

libreoffice 官网https://zh-cn.libreoffice.org/软件下载镜像:https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/软件安装略过,custom 方式,指定目录。1、使用jodconverter.jar,新建 maven 项目,添加 pom 依赖,写 java 代码把 docx 转 pdfpom:<project xmlns="http://maven..

2021-02-02 21:42:55 1019 1

原创 Java 动态代理

代码:package constxiong;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * 测试动态代理 * @author ConstXiong */public class TestDynamicProxy implements InvocationHandler { public static

2021-02-02 21:37:18 151

原创 openjdk jol 工具打印 Java 对象内存布局

1、maven 依赖<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version></dependency>2、测试类package constxiong;import org.openjdk.jol.info.ClassLayout.

2021-02-02 21:19:27 1986 2

原创 Spring整合MyBatis

1、Maven 依赖<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://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion&gt

2021-02-02 21:13:11 216 1

原创 MyBatis 如何编写一个自定义插件?

先看如何自定义一个插件1、新建类实现 Interceptor 接口,并指定想要拦截的方法签名/** * MyBatis 插件 */@Intercepts({@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})public class ExamplePlugin imple

2021-02-02 18:48:13 529

原创 MyBatis 延迟加载

1、SQLcreate table user (id int primary key,name varchar(400));insert user info VALUES(1, 'ConstXiong1');create table info (user_id int primary key,name varchar(400));insert into info VALUES(1, '大熊');create table article (user_id int,title

2021-02-02 00:10:30 302 3

原创 MyBatis 1对1 1对多 关联查询

1、SQLcreate table user (id int primary key,name varchar(400));insert user info VALUES(1, 'ConstXiong1');create table info (user_id int primary key,name varchar(400));insert into info VALUES(1, '大熊');create table article (user_id int,title

2021-02-01 05:41:33 309

eclipse使用教程ppt

ppt版,eclipse的使用教程。简单介绍了eclipse的使用。

2018-09-03

Eclipse入门教程

eclipse的入门教程,介绍了如何使用eclipse开发java项目。

2018-08-31

JasperReport中文用户手册

JasperReport是一款开源报表引擎,用纯java编写。文档是对JasperReport的介绍。包含设计工具和模板文件等...

2018-08-30

无线wifi破解教程

简单介绍了wifi的工作原理。讲解了如何使用破解工具,搭建工作环境。使用字典破解wifi的密码。

2018-08-30

空空如也

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

TA关注的人

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