自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot属性配置

文章目录SpringBoot属性配置(V2.0.2)SPRING_APPLICATION_JSON PropertiesRandom PropertiesCommand Line PropertiesProperties FilesProfile-specific PropertiesPlaceholders in PropertiesUsing YAML Instead of PropertiesLoading YAMLExposing YAML as Properties in the Spring E

2021-05-27 18:40:09 1176

原创 基于JAVA配置的SpringMVC

以往使用SpringMVC的时候都是通过在Resource目录下面新建一个web.xml文件用来完成Servlet的配置,往DispatcherServlet中添加一个WebApplication的配置文件,完成DispatcherServlet的配置,还可以配置一些请求的拦截,加载顺序等,其实外面也可以不使用web.xml,通过实现WebApplicationInitializer接口或者继承AbstractAnnotationConfigDispatcherServletInitializer 类(.

2021-04-12 17:19:23 337

原创 ThreadPoolExecutor 学习记录

文章目录线程池的优势创建线程池的方式ThreadPoolExecutor 常用的几个参数ThreadPoolExecutor 大概的工作机制如何使用ThreadPoolExecutor 线程池仿照ThreadPoolSize实现原理实现一个简单版的线程池线程池的优势线程池使用相对于手动创建线程池有两个有点,其一是减少了每个任务的调用开销,因为线程池中的线程是可以重复执行不同的任务的,而手动创建线程池每个任务都得创建一个新得线程去处理,还有就是线程池还维护了一些基本得统计信息,例如已完成任务得数量等。创

2021-01-21 18:58:19 211

原创 Spring Aspect Oriented Programming with Spring

文章目录5.1 AOP 概念5.2 Spring AOP能力和目标5.3 AOP Proxies5.4 @AspectJ支持5.4.1 启用@AspectJ支持5.4.2 声明一个切面5.4.3 声明切入点5.4.4 声明通知adviceBefore AdviceAfter Returning AdviceAfter Throwing AdviceAfter (Finally) AdviceAround AdviceAdvice ParametersAdvice Ordering5.4.5 Introduc

2020-12-11 17:01:58 326

原创 Spring Validation, Data Binding, and Type Conversion

文章目录3.1 Validation by Using Spring’s Validator Interface3.2 Resolving Codes to Error Messages3.3 Bean操作和BeanWrapper3.3.1 Setting and Getting 基础和嵌套属性的值3.3.2 内置的PropertyEditor实现3.4 Spring 类型转换3.4.1 转换 SPI3.4.2 Using `ConverterFactory`3.4.3 Using `GenericConv

2020-12-09 15:50:48 246

原创 Spring Resources

文章目录2.1 Resource 介绍2.2 Resource 接口2.3 构建 Resource 的实现类2.3.1 UrlResource2.3.2 ClassPathResource2.3.3 FileSystemResource2.3.4 ServletContextResource2.3.5 InputStreamResource2.3.6 ByteArrayResource2.4 `ResourceLoader` 接口2.5 ResourceLoaderAware 接口2.6 Resource

2020-12-08 15:52:00 1028 1

原创 Spring Null-safety

文章目录7.1 用例7.2 JSR-305元注解参考文献尽管Java不允许您使用其类型系统来表示空安全性,但是Spring Framework现在在org.springframework.lang包中提供了以下注释,以使您声明API和字段的空性:@Nullable:表示特定参数,返回值或字段可以为null的注释。@NonNull:表示特定参数,返回值或字段不能为null的注释@NonNullApi:程序包级别的注释,它声明非空为参数和返回值的默认语义。@NonNullFields:程序包级别的注

2020-12-08 15:50:57 100

原创 Spring Logging

从Spring Framework 5.0开始,Spring在spring-jcl模块中实现了自己的Commons Logging网桥。该实现检查类路径中是否存在Log4j 2.x API和SLF4J 1.7 API,并使用其中的第一个作为日志记录实现,回溯到Java平台的核心日志记录设施(也称为JUL或Java) .util.logging)(如果Log4j 2.x和SLF4J都不可用)。将Log4j 2.x或Logback(或其他SLF4J提供程序)放在您的类路径中,而无需任何额外的桥接,并让框架自动

2020-12-08 15:50:03 255

原创 Spring Data Buffers and Codecs

文章目录8.1 `DataBufferFactory`8.2 `DataBuffer`8.3 `PooledDataBuffer`8.4 `DataBufferUtils`8.5 Codecs8.6 Using `DataBuffer`参考文献Java NIO提供了ByteBuffer,但是许多库在顶部构建了自己的字节缓冲区API,特别是对于网络操作,其中重用缓冲区和/或使用直接缓冲区对性能有利。例如,Netty具有ByteBuf层次结构,Undertow使用XNIO,Jetty使用池字节缓冲区以及要释放

2020-12-08 15:49:20 539

原创 ApplicationContext的其他功能

文章目录1.15.1 使用MessageSource进行国际化1.15.2 标准和自定义事件1.15.3 方便地访问低级资源1.15.4 应用程序启动跟踪1.15.5 Web应用程序的便捷ApplicationContext实例化1.15.6 将Spring ApplicationContext部署为Java EE RAR文件参考文献org.springframework.beans.factory包提供了用于管理和操作bean的基本功能,包括以编程方式。 org.springframework.cont

2020-12-08 09:51:16 390

原创 注册`LoadTimeWeaver`

Spring使用LoadTimeWeaver在将类加载到Java虚拟机(JVM)中时对其进行动态转换。要启用加载时编织,可以将@EnableLoadTimeWeaving添加到@Configuration类之一,如以下示例所示:@Configuration@EnableLoadTimeWeavingpublic class AppConfig {}另外,对于XML配置,可以使用context:load-time-weaver元素:<beans> <context:l

2020-12-07 10:48:13 157

原创 环境的抽象 Environment

文章目录1.13.1 Bean定义配置文件1.13.2 PropertySource抽象1.13.3 使用`@PropertySource`注解1.13.4 声明中的占位符解析参考文献Environment接口是集成在容器中的抽象,可对应用程序环境的两个关键方面进行建模:概要文件(profiles)和属性(properties)。概要文件是仅在给定概要文件处于活动状态时才向容器注册的Bean定义的命名逻辑组。可以将Bean分配给概要文件,无论是以XML定义还是带有注释。与配置文件相关的环境对象的作用是确

2020-12-07 10:42:36 254

原创 使用JSR 330标准注释

文章目录1.11.1 @Inject和@Named的依赖注入1.11.2 @Named和@ManagedBean:@Component注释的标准等效项1.11.3 JSR-330标准注释的局限性参考文献​ 从Spring 3.0开始,Spring提供对JSR-330标准注释(依赖注入)的支持。这些注释的扫描方式与Spring注释的扫描方式相同。要使用它们,您需要在类路径中有相关的jar。​ 如果使用Maven,则标准Maven存储库(https://repo1.maven.org/maven2/jav

2020-12-04 17:48:41 472

原创 spring 类路径扫描和托管组件

文章目录1.10.1 @Component和更进一步的注解1.10.2 使用元注解和组合注解1.10.3 自动检测类并注册Bean definitions1.10.4 使用过滤器自定义扫描1.10.5 在组件中定义Bean元数据1.10.6 命名自动检测的组件1.10.7 提供自动检测组件的范围1.10.8 提供带有注释的Qualifier元数据1.10.9 生成候选组件的索引参考文献​ 通过扫描类路径来隐式检测候选组件的选项。候选组件是与过滤条件匹配的类,并具有在容器中注册的相应bean定义。这消除了使

2020-12-04 11:14:45 209

原创 Application 容器扩展点

文章目录1.8.1 使用BeanPostProcessor自定义Bean1.8.2 使用BeanFactoryPostProcessor自定义配置元数据1.8.3 使用FactoryBean自定义实例化逻辑参考文献通常,应用程序开发人员无需为ApplicationContext实现类提供子类。相反,可以通过插入特殊集成接口的实现来扩展Spring IoC容器。接下来的几节描述了这些集成接口。1.8.1 使用BeanPostProcessor自定义Bean​ BeanPostProcessor接口定义了

2020-12-03 14:22:21 116

原创 Bean定义的继承

​ Bean定义可以包含许多配置信息,包括构造函数参数,属性值和特定于容器的信息,例如初始化方法,静态工厂方法名称等。子bean定义从父定义继承配置数据。子定义可以覆盖某些值或根据需要添加其他值。使用父bean和子bean定义可以节省很多输入。实际上,这是一种模板形式。如果您以编程方式使用ApplicationContext接口,则子bean定义由ChildBeanDefinition类表示。大多数用户不在此级别上与他们合作。相反,它们在诸如ClassPathXmlApplicationContext之类

2020-11-30 10:38:00 215

原创 Bean的作用域

文章目录1.5.1 Singleton 单例作用域1.5.2 Prototype 原型作用域1.5.3 具有原型Bean依赖关系的Singleton Bean1.5.4 Request,Session,Application,WebSocket 作用域1.5.5 自定义作用域参考文献​ 创建bean定义时,将创建一个配方,用于创建该bean定义所定义的类的实际实例。 bean定义是配方的想法很重要,因为这意味着与类一样,您可以从一个配方中创建许多对象实例。​ 您不仅可以控制要插入到从特定bean定义创建

2020-11-30 10:08:57 1923

原创 Bean功能的扩展点

文章目录1.6.1 Bean的生命周期回调扩展点1.6.2 ApplicationContextAware和BeanNameAware接口扩展点1.6.3 其他Aware的接口扩展点参考文献​ Spring框架提供了许多接口,可用于自定义Bean的性质。1.6.1 Bean的生命周期回调扩展点为了与容器对bean生命周期的管理进行交互,您可以实现Spring InitializingBean和DisposableBean接口。容器为前者调用afterPropertiesSet()并为后者调用destr

2020-11-30 10:07:13 387

原创 BeanFactory工厂与ApplicationContext的区别

文章目录1.16 `BeanFactory`工厂参考文献1.16 BeanFactory工厂​ BeanFactory API为Spring的IoC功能提供了基础。它的特定合同主要用于与Spring的其他部分以及相关的第三方框架集成,并且其DefaultListableBeanFactory实现是更高级别的GenericApplicationContext容器中的关键委托。​ BeanFactory和相关接口(例如BeanFactoryAware,InitializingBean,Disposable

2020-11-27 10:45:38 177

原创 注入Bean依赖的不同方式处理

文章目录1.4 `Bean`之间的依赖处理1.4.1 `Bean`之间的依赖注入1.4.2 依赖注入的详细配置1.4.3 使用`depends-on`1.4.4 设置`Bean`的懒加载1.4.5 `Autowiring`自动注入的配置1.4.6 方法注入Lookup Method 注入参考文献1.4 Bean之间的依赖处理​ 典型的企业应用程序不包含单个对象(或Spring术语中的bean)。即使是最简单的应用程序,也有一些对象可以协同工作,以呈现最终用户视为一致的应用程序。下一部分将说明如何从定义多

2020-11-27 10:34:20 495

原创 容器中定义的Bean概述

文章目录1.3.1 如何给`Bean`命名1.3.2 如何实例化一个`Bean`参考文献Spring IoC容器管理一个或多个bean。这些bean是使用您提供给容器的配置元数据创建的(例如,以XML `定义的形式)。​ 在容器本身内,这些bean定义表示为BeanDefinition对象,其中包含(除其他信息外)以下元数据:1. 包限定的类名称:通常,定义了`Bean`的实际实现类。2. `Bean`行为配置元素,用于声明`Bean`在容器中的行为(作用域,生命周期回调等)。3. 引用该`bea

2020-11-16 14:37:58 199

原创 Spring容器Container概述

文章目录1.2.1 如何配置`Spring`容器的元数据1.2.2 如何实例化一个`Spring`实例对象1.2.3 `Spring`容器如何使用参考文献org.springframework.context.ApplicationContext接口表示Spring IoC容器,并负责实例化,配置和组装Bean。容器通过读取配置元数据获取有关要实例化,配置和组装哪些对象的指令。配置元数据以XML,Java注解或Java`代码表示。它使您能够表达组成应用程序的对象以及这些对象之间的丰富相互依赖关系。​ S

2020-11-16 14:36:14 922

原创 使用常用的注解配置Spring容器

文章目录1.9.1 `@Required`1.9.2 `@Autowired`1.9.3 `@Primary` 让`@Autowired`注入不纠结1.9.4 `@Qualifiers`让`@Autowired`注入指定名称的`Bean`1.9.5 可以使用泛型来限定对象1.9.6 可以使用`CustomAutowireConfigurer`添加自定义的`qualifier`类型的注解1.9.7 使用`@Resource`注入1.9.8 使用 `@Value`注入1.9.9 `PostContruct`和`

2020-11-16 09:41:44 107

原创 尽量使用静态工厂方法替换构造方法来实例对象

文章目录静态工厂方法替换构造器的优势静态工厂方法替换构造器的缺点结论参考文献对于一个类而言,为了让别的类获取自身的一个实例,最常用的方法就是提供一个公有的构造器。还有一种方法,就是一个类可以提供一个公有的静态工厂方法,它只是一个返回类的实例的静态方法。这里所说的静态工厂方法与设计模式中的工厂方法模式不同。类可以通过静态工厂方法来对外暴露实例对象,而不是通过构造器。提供静态工厂方法而不是公有的构造器,这样做具有几大优势。静态工厂方法替换构造器的优势静态工厂方法与构造器不同的第一大优势在于,它们可以

2020-11-15 17:07:28 127

原创 Spring IOC和Bean介绍

Spring IoC容器和Bean简介Spring IoC容器也称为依赖注入(DI)。在此过程中,对象仅通过构造函数参数,工厂方法的参数或在构造或从工厂方法返回后在对象实例上设置的属性来定义其依赖项(即,与它们一起使用的其他对象) 。然后,容器在创建bean时注入那些依赖项。此过程从根本上讲是通过使用类的直接构造或诸如服务定位器模式之类的控件来控制其依赖项的实例化或位置的bean本身的逆过程(因此称为Control的倒置)。org.springframework.beans和org.springfram

2020-11-14 14:28:57 109

原创 如何使用Java代码方式配置Spring的IOC容器

文章目录`@Bean`和`@Configuration` 的基础使用使用`AnnotationConfigApplicationContext`实例化`Spring`容器的几中方式通过`AnnotationConfigWebApplicationContext`支持`Web`应用程序`@Bean`注解的使用`@Configuration`注解的使用结合各个 `Java`配置类从Spring 3.0开始,Spring 提供的许多功能都是使用的JavaConfig配置的。所以我们可以使用Java而不是XML文

2020-11-14 14:16:36 201

原创 如何使用java自带的SAX工具类解析XML文件转换为Document对象

文章目录如何使用java自带的SAX工具类解析XML文件转换为Document对象1. 获取需要解析的XML文件java2. 获取DocumentBuilderFactory3. 获取DocumentBuilder4. 使用`parse()`方法把`XML`解析成`Document`5. 解析`Document`对象中的节点信息6.具体的代码内容7.解析结果展示如何使用java自带的SAX工具类解析XML文件转换为Document对象1. 获取需要解析的XML文件java//根据xml路径获取该inp

2020-08-14 11:37:36 1163

原创 Spring源码阅读-getBean逻辑分析记录

getBean从缓存中获取BeanObject sharedInstance = getSingleton(beanName);上述代码会从三个map中读取缓存的Bean,这三个map也是俗称的 this.singletonObjects 一级缓存,this.earlySingletonObjects 二级缓存,this.singletonFactories 三级缓存,在Bean属性循环引用的时候也会用到。如果缓存有数据执行 bean = getObjectForBeanInstance(s

2020-08-14 11:00:17 140

原创 JAVA 常用容器学习记录

文章目录java常用容器1. 容器的基本概念2. 利用Arrays和Collections添加一组元素3. 容器的打印4. List常用方法的使用5. 迭代器Iterator5.1. ListIterator6. LinkedList常用方法使用7. 栈Stack常用方法使用8. Set常用方法使用9. Map常用方法使用10. 队列Queue常用方法使用10.1.1 优先队列PriorityQueue11. Collection和Iterator迭代器12. Foreach与Iterator迭代器13.

2020-06-21 18:28:32 197 1

原创 ArrayList 源码坑读学习记录

FieldDEFAULT_CAPACITY这个属性是ArrayList的容量,默认初始就赋值位10,如果构造函数没有出入集合容量的话,就会用这个默认的初始化容量private static final int DEFAULT_CAPACITY = 10;EMPTY_ELEMENTDATA初始化一个Object类型的空数组对象,用于后续方法调用private static final Object[] EMPTY_ELEMENTDATA = {};DEFAULTCAPACITY_EM

2020-06-16 17:25:03 1636

原创 Mybatis二级缓存和一级缓存

为什么要使用缓存当我们需要使用DB数据库的数据时,需要使用statement对象去操作DB数据库,如果同时又多个请求一样的statement的时候就需要去查询多次,如果使用了缓存,就不会出现这种情况,这样又多个相同的statement对象请求来的时候只会执行一次DB数据库,因为会先去缓存中获取数据,确认是否又缓存的数据,有就返回数据,如果没有才去执行DB数据库。mybatis二级缓存的使用测试1.同一个命名空间同一个sqlsession对象执行相同语句 只会操作一次数据库,第二次会从数据库拿Myb

2020-06-07 23:30:10 457

原创 Mybatis应用和源码学习-Document文件mapper节点解析

后续解析

2020-05-31 16:43:43 253

原创 Mybatis应用和源码学习-把InputStream资源代表的XML文件转换成Document

通过Mybatis应用和源码学习-如何通过指定配置文件获取InputStream 这一章获取的InputStream对象传入到SqlSessionFactoryBuilder.build()方法中把InputStream对象代表的XML文件转化成Document对象,代码入口如下:SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSessionFactoryBuilder

2020-05-30 14:09:03 793

原创 Mybatis应用和源码学习-Document文件configuration节点解析

aaa

2020-05-30 13:12:04 268

原创 Mybatis应用和源码学习-如何通过指定配置文件获取InputStream

如何通过指定配置文件获取InputStream继上一篇Mybatis应用和源码学习-怎么使用Mybatis代替jdbc操作数据库有说到通过Mybatis代替JDBC来操作数据库,其中有一步是通过给定的配置文件路径来获取这个路径对应的InputStream流的逻辑操作具体代码如下:String resource = "mybatis.xml"; InputStream inputStream = Resources.getResourceAsStream(resource);从上面的代

2020-05-30 11:29:24 423

原创 Mybatis应用和源码学习-怎么使用Mybatis代替jdbc操作数据库

什么是Mybatis这是引用mybatis官网的一个解释什么是mybatis,简短点说就是帮助我们替换掉原有的jdbc操作数据库,然后对数据类型做出相应的转换,参数和结果集的封装。MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java

2020-05-30 10:12:34 828

原创 JAVA可变参数类型记录

java可变参数的表述形式在数据类型后面用三个点表示:static void func(int... args){ for (int i: args ) { System.out.println(i); } }A.func(1,2,3);A.func(5,6);输出:1,2,35,6可变参数的有以下几个特点:1.int… args的最终编译结果形式应该为...

2020-04-01 12:54:01 156

原创 Spring-boot Getting Started

快速搭建一个SpringBoot的"Hello World"应用1. Spring Boot 简介Spring Boot使创建可运行的独立,生产级基于Spring的应用程序变得容易。我们对Spring平台和第三方库持固执己见的观点,这样您就可以以最小的麻烦开始使用。大多数Spring Boot应用程序只需要很少的Spring配置。您可以使用Spring Boot创建可以通过使用java -j...

2019-12-01 21:41:32 290

转载 Hexo 最常用的几个命令

Hexo 约有二十个命令,但普通用户经常使用的大概只有下列几个:hexo shexo s启动本地服务器,用于预览主题。默认地址: http://localhost:4000/hexo s 是 hexo server 的缩写,命令效果一致;预览的同时可以修改文章内容或主题代码,保存后刷新页面即可;对 Hexo 根目录 _config.yml 的修改,需要重启本地服务器后才能预览效果。...

2019-07-25 21:02:23 95

转载 hexo+Github搭建博客,能访问但无法加载css文件

转载至:https://blog.csdn.net/StarryaSky/article/details/83378011问题:搭建好hexo后,在本地能够正常访问。但使用git上传到Github后,发现能够访问页面但是不能加载CSS样式文件和Jquery文件。最后的解决办法是:修改hexo中 _config.yml 文件:将root:/ 修改为 root:/ xxx.guithu...

2019-07-25 16:24:30 985

空空如也

空空如也

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

TA关注的人

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