Java
安迪源文
小步快走
展开
-
非Spring环境单独引入AnnotationConfigApplicationContext注解方式使用组件
package com.paas.app.hello;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.ComponentScan;// @Configuration // 这种模式下该注解已经没有必要使用@ComponentScan(value = "com.paas.app.hello")原创 2021-04-03 08:53:14 · 1000 阅读 · 0 评论 -
Spring 工具类 ClassPathBeanDefinitionScanner 组件Bean定义扫描
ClassPathBeanDefinitionScanner是一个从指定包内扫描所有bean定义的Spring工具。工作时,它接收一组包的名称,然后在这些包内扫描所有的类,查找其中符合条件的bean组件定义并将这些bean组件定义注册到容器。这些bean定义注册到容器时具体使用的类为ScannedGenericBeanDefinition,这是Spring bean定义模型接口BeanDefin...原创 2019-01-03 16:58:28 · 4027 阅读 · 0 评论 -
Spring 内部工具 : 配置类、Bean定义的发现和注册
工具名称功能简介ConfigurationClassPostProcessorBeanDefinitionRegistryPostProcessor/BeanFactoryPostProcessor接口的实现类,会在应用程序启动过程中,应用上下文执行BeanFactoryPostProcessor阶段被执行,用于处理所有的配置类,并注册其中的bean定义Configur...原创 2019-01-03 17:13:48 · 606 阅读 · 0 评论 -
Spring的bean定义 2 : 通用bean定义逻辑 -- AbstractBeanDefinition
概述AbstractBeanDefinition是最终全功能BeanDefinition实现类的基类,也就是这些类的共同属性和公用逻辑实现。AbstractBeanDefinition中并没有太复杂的实现逻辑,而是主要是用于:定义共用的构造函数。定义共用BeanDefinition属性以及提供它们的getter/setter方法。其他一些共用工具方法 : 从另外一个bean定义覆盖当前...原创 2018-12-30 21:50:45 · 2447 阅读 · 0 评论 -
Spring的bean定义 3 : BeanDefinition实现类例子演示
演示源码辅助演示使用的bean类package tut.zero;import lombok.Data;@Datapublic class Pet { String type; String name;}演示BeanDefinition各个实现类例如何被使用package tut.zero;import lombok.extern.slf4j.Slf4j...原创 2018-12-31 00:13:31 · 1390 阅读 · 0 评论 -
KeyStore 和 TrustStore
简介KeyStore 和 TrustStore是JSSE中使用的两种文件。这两种文件都使用java的keytool来管理,他们的不同主要在于用途和相应用途决定的内容的不同。这两种文件在一个SSL认证场景中,KeyStore用于服务器认证服务端,而TrustStore用于客户端认证服务器。 比如在客户端(服务请求方)对服务器(服务提供方)发起一次HTTPS请求时,服务器需要向客户端提...原创 2017-12-14 18:55:12 · 15346 阅读 · 0 评论 -
Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader
概述对于每一个底层资源,比如文件系统中的一个文件,classpath上的一个文件,或者一个以URL形式表示的网络资源,Spring 统一使用 Resource 接口进行了建模抽象,相应地,对于这些资源的加载,Spring使用了 ResourceLoader 进行了统一建模抽象。通过ResourceLoader,给定其可以接受的资源路径,我们可以获得对应资源的Resource对象,然后进行进行相...原创 2018-12-31 18:13:50 · 779 阅读 · 1 评论 -
Spring Security Core 5.1.2 源码解析 -- PasswordEncoderFactories
概述PasswordEncoderFactories是Spring Security创建DelegatingPasswordEncoder对象的工厂类。该工厂所创建的DelegatingPasswordEncoder缺省使用bcrypt用于加密,并且能够用于匹配以下几种密码类型 :ldapMD4MD5noop (明文密码)pbkdf2scryptSHA-1SHA-256sha...原创 2018-12-05 15:07:41 · 1392 阅读 · 0 评论 -
Spring MVC 9大组件
名称简介HandlerMapping处理句柄映射HandlerAdapter处理句柄适配器HandlerExceptionResolver处理句柄异常解析器ViewResolver视图解析器RequestToViewNameTranslator请求到视图名称的翻译器LocaleResolverLocale解析器,处理本地化/国际化语言相...原创 2019-01-01 19:50:18 · 648 阅读 · 0 评论 -
Spring 工具类 ComponentScanAnnotationParser @ComponentScan注解处理器:扫描和注册组件bean
概述ComponentScanAnnotationParser是Spring的一个内部工具,它会基于一个类及该类上的@ComponentScan注解属性分析指定包(package)获取其中的bean定义。所分析的包可以是多个包。你可以简单地将ComponentScanAnnotationParser理解成注解@ComponentScan的处理器:输入 : @ComponentScan...原创 2019-01-02 18:18:20 · 2717 阅读 · 0 评论 -
Spring 工具类 ConfigurationClassParser 分析得到配置类
简介Spring的工具类 ConfigurationClassParser 用于分析一个 @Configuration 注解的类,产生一组ConfigurationClass对象。其分析过程主要是递归分析注解中隐含的@Import,找出其中所有的配置类,然后返回这组配置类。原创 2017-11-16 12:19:50 · 14388 阅读 · 6 评论 -
Java Lambda 表达式的作用
从Java 8开始,Java开始提供Lambda表达式,这里不再介绍Lambda表达式怎么用,只总结Lambda表达式的作用:使用更清楚简洁的一个表达式代替一个函数式接口减少代码量代码意图更清晰对集合数据Collection的迭代,过滤,抽取更容易,代码也更简洁使用变量记住一段逻辑任务逻辑传递 (目的就是传递一段动态的任务逻辑交给执行者执行)回调逻辑传递 (目的是调用方发生...原创 2019-02-21 17:23:30 · 944 阅读 · 0 评论 -
Java 8 常见函数式接口使用简单示例
简介JDK 1.8 API包含了很多内建的函数式接口。之所以提供这些接口,是因为它们有比较多的使用场景,通过结合使用lambda表达式,我们可以很方便地利用这些接口将一些逻辑作为变量传递甚至组合起来实现更为复杂的逻辑,就像我们将一些普通类对象作为变量传递或者组合起来一样方便。这里我们对一些常用的函数式接口给出一些简单的使用例子,方便你理解这些接口的意义,也在想使用它们的时候,知道怎样使用。...原创 2018-12-01 22:45:41 · 957 阅读 · 0 评论 -
Spring factory bean/FactoryBean/BeanFactory 的区别简记
factory bean配置到容器中用来通过实例方法创建其他bean的一种bean。例子 (此例子来自Spring官方文档) :<!-- factory bean, 这是一个bean,包含了一个实例方法 createInstance() 用于创建其他某种类型的bean实例 --><bean id="serviceLocator" class="examples.D...原创 2018-11-11 23:50:12 · 577 阅读 · 0 评论 -
Springboot : SpringApplication 的启动过程分析
SpringApplication 的启动过程的两个阶段原创 2017-11-09 11:18:32 · 719 阅读 · 0 评论 -
JSSE中的术语和定义
术语/定义英文 介绍 authentication The process of confirming the identity of a party with whom one is communicating.认证 : 确认通讯某一参与方的身份的过程 cipher suite A combination of cryptographic parameters that defi翻译 2017-12-25 17:16:49 · 507 阅读 · 0 评论 -
SSL解决了通信中的哪些问题 ?
SSL解决的通信中的3个问题无法确认通信对方就是你认为的要与其通信的那一方; 通信双方可以互相认证; 网络数据会被截取,可能会被无关第三方读取,比如攻击者; 通信双方认证之后的通信通道是加密的,第三方无法读取;截取到数据的人可能把数据进行修改然后再继续发给接收者,接受者却意识不到数据被篡改; SSL引入了安全哈希函数,类似于checksum,用于确保传输过程中数据的篡改会被识别;S原创 2017-12-26 14:52:34 · 1358 阅读 · 0 评论 -
Web应用中的 Spring Security 要点笔记
在一个使用了Spring Security 的 Web 应用中,安全目标的达成基于 Servlet Filter :客户端对应用发起请求,容器基于请求URI决定应用哪个servlet和哪些filters;每个请求最多由某一个servlet处理; 所有要应用的filter按照特定顺序形成一个链; Filter顺序的决定 Filter bean定义通过使用注解@Order或者实现接口Or...原创 2018-07-30 18:22:08 · 398 阅读 · 0 评论 -
Spring Boot Web 应用中Spring Security DelegatingFilterProxy 的注入
elegatingFilterProxyRegistrationBeanpackage org.springframework.boot.web.servlet;import javax.servlet.Filter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import ...原创 2018-07-31 17:22:14 · 1605 阅读 · 0 评论 -
Spring Security 中跨 request 请求保持 SecurityContext
在一个ServletWeb应用中,对于一个请求进行处理的全过程,服务端使用的是同一个线程,通过利用SecurityContextHolder的MODE_THREADLOCAL安全上下文SecurityContext保持机制,无论该处理过程中使用到了哪些对象的哪些方法,这些方法内都可以获得当前访问者的安全上下文SecurityContext。但是,如果跨多个请求需要保持同样的安全上下文Securit...原创 2018-08-10 12:17:37 · 3921 阅读 · 5 评论 -
未登录用户访问受Spring Security保护的Web页面/API时发生了什么 ?
在应用Spring Security的Web应用中,假定全部采用缺省配置,如果用户在未登录状态试图访问一个受保护的HTTP资源,可能是我们的一个页面,也可能是一个Restful API,此时:Spring Security会抛出异常AuthenticationException;ExceptionTranslationFilter过滤器捕获到该异常,调用其属性authenticationE...原创 2018-08-07 18:23:30 · 4675 阅读 · 0 评论 -
Spring Security Web应用中用户访问自己无权访问的资源时发生了什么?
在应用Spring Security的Web应用中,假定全部采用缺省配置,如果用户已经登录(且未超时过期),但试图访问一个自己没有权限的HTTP资源,此时:Spring Security会抛出一个异常AccessDeniedException;ExceptionTranslationFilter过滤器会调用其属性accessDeniedHandler对象(类型为AccessDeniedHa...原创 2018-08-07 18:35:37 · 1540 阅读 · 0 评论 -
Spring @Import 的使用及其工作原理分析
@Import 如何使用 ?参考文章"向 Spring IoC容器注册 bean 的方式总结"中关于@Import的部分。@Import 背后是如何工作的 ?参考文章"Spring 工具类 ConfigurationClassParser 是如何工作的 ?"中关于processImports()的部分。...原创 2018-11-06 17:53:23 · 4687 阅读 · 0 评论 -
Spring AOP proxyTargetClass 行为表现总结
proxyTargetClasstrue目标对象实现了接口 – 使用CGLIB代理机制目标对象没有接口(只有实现类) – 使用CGLIB代理机制false目标对象实现了接口 – 使用JDK动态代理机制(代理所有实现了的接口)目标对象没有接口(只有实现类) – 使用CGLIB代理机制...原创 2018-11-11 18:26:19 · 11068 阅读 · 0 评论 -
Springboot 应用工作原理简述
同传统的Spring开发模式相比,开发Springboot应用时,我们只需要引入相关的starter jar包就能构造一个可以运行起来的应用,这样就可以把主要的精力用于核心业务功能的开发,非常方便和高效。那么,在这种方便和高效背后,Springboot是怎么工作的?这里对其工作原理做一个简单的描述 :项目主动引入的各种starter jar包通过自己的maven POM.xml将自己所依赖的...原创 2018-11-13 18:08:37 · 2062 阅读 · 0 评论 -
Springboot 的内部工具类 SpringFactoriesLoader 简介
所在包 : org.springframework.core.io.support类名 : SpringFactoriesLoader官方文档类介绍 :该类并不对外暴露给应用开发者使用,而是spring框架自己使用的内部工具类,本身被声明为 abstract,不可以被实例化。在 Spring boot 应用启动的过程中,这个类的工作很重要,启动逻辑使用该类从cl...原创 2017-11-02 09:31:21 · 1364 阅读 · 0 评论