Spring源码之SimpleAliasRegistry解读(一) 阅读spring源码中org.springframework.core.SimpleAliasRegistry类时发现该类主要是使用map作为alias的缓存,并对接口AliasRegistry进行实现. 在阅读该源码中对hasAlias(String name, String alias):方法产生了疑惑.源码注释中解释该方法的作用是:确定给定的名称是否已注册了给定的别名. 该方法源码如下: public boolean ha…
AliasRegistry接口定义了alias的基本操作. package org.springframework.core; public interface AliasRegistry { //对指定的名称注册别名 void registerAlias(String name, String alias); //从当前容器移除指定别名 void removeAlias(String alias); //判断指定名称是否为别名 boolean isAlias(String beanName);…
Spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/…
在上一篇中,通过restful api的方式查看信息过于繁琐,也不直观,效率低下.当服务过多的时候看起来就过于麻烦,每个服务都需要调用不同的接口来查看监控信息. SBA SBA全称spring boot admin 是一个管理和监控spring boot 应用程序的开源项目,分为admin-server与admin-client两个组件,admin-server通过采集actuator端点数据,显示在spring -boot-admin-ui上,已知的端点几乎都有进行采集,通过spring-bo…
本文内容 @Transactional事务使用 @EnableTransactionManagement 详解 @Transactional事务属性的解析 TransactionInterceptor 事务控制 声明式事务使用和原理 声明式的主要步骤 使用@EnableTransactionManagement启用Spring 事务管理支持 使用@Transactional标识需要事务的方法会自动开启事务 注入数据源和事务管理器 下面通过案例演示一下上面的效果. 案例 使用@EnableTran…
一.前言 写这篇博文的主要目的如下: 通过相关类和接口分析IoC容器到底长什么样. 阐述笔者对Spring上下文和容器的理解. 介绍重要的类辅助理解SpringBoot的启动流程. 二.Spring IoC容器的设计 看看下面这张图(摘自<Spring技术内幕>),IoC容器的设计分为两条线,  BeanFactory ==> HierarchicalBeanFactory ==>ConfigurableBeanFactory ,这条线可以理解成IoC容器的设计路线.  BeanF…
SimpleAliasRegistry :主要使用map最为alias的缓存,并对接口AliasRegister进行实现. ==============================插曲============================== Spring源码阅读2:AliasRegistry&SimpleAliasRegistry…
最近看了一些 Spring 源码,发现源码分析的文章很多,而底层思想分析的文章比较少,这个系列文章准备总结一下Spring中给我的启示,包括设计模式思想.SOLID设计原则等,涉及一些编程的基本原则,虽然看似简单,实则"小道理.大学问". 我尽量遇到的问题谈起,再说解决方案,同时至少举两个例子. 这些方法都是基于我遇到的一些实际代码,掌握了基本思想,就可以举一反三. 让人头晕眼花的跳转 如果你通过某些培训机构的源码课,就会发现他们的老师在讲源码的时候在类之间.方法之间不停地跳,学员一脸…
一.@interface Java用  @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类. 二.@Override,@Deprecated,@SuppressWarnings 注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,以后,JAVAC编译器,开发工具和其他程序可以用反射来了解你的类以及各种元素上有无任何标记,看你有什么标记,就去干相应的事. 注解@Override用在方法上,当我们想重写一个方法时,在方法上加@Ove…
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/ Table of Contents I. Overview of Spring Framework 1. Getting Started with Spring 2. Introduction to the Spring Framework 2.1. Dependency Injection and Inversion of Contr…
1. WebFlux介绍 Spring WebFlux 是 Spring Framework 5.0中引入的新的响应式web框架.与Spring MVC不同,它不需要Servlet API,是完全异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范. Spring WebFlux 用于创建基于事件循环执行模型的完全异步且非阻塞的应用程序. (PS:所谓异步非阻塞是针对服务端而言的,是说服务端可以充分利用CPU资源去做更多事情,这与客户端无关,客户端该怎么请求还是怎…
你真的了解ClassLoader吗? 这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践.经验和样例.本文的例子比原文更加具有实际意义,文字内容也更充沛一些,非常感谢作者 Jevgeni Kabanov 能够共享如此优秀的文档. 1. 为什么你需要了解和敬畏ClassLoader ClassLoader在Java语言中占据了核心地位,Java应用服务器,OSGi,以及大量的网络框架,它们大多数都用到了…
今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\apache-maven-3.0.4目录下,这里我要改一下默认的maven的仓库的路径,在D:\maven\apache-maven-3.0.4\conf下,修改setting.xml配置文件,49到54行注释掉,换成 <localRepository>D:/maven/repo</loca…
并发编程网 - ifeve.com 让天下没有难学的技术 首页 JAVA 深入浅出ClassLoader 深入浅出ClassLoader Dedicate to Molly. 你真的了解ClassLoader吗? 这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践.经验和样例.本文的例子比原文更加具有实际意义,文字内容也更充沛一些,非常感谢作者 Jevgeni Kabanov 能够共享如此优秀的文档.…
使用工具:maven.idea.jdk8.mysql.tomcat9.0 初学ssm框架,配置文件的配置目录:                                     其中generator.xml是用Mybatis从数据库中表逆向生成pojo.dao.mapper下此表的相关信息. 配置文件如下: 1.pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceE…
首先创建一个实体类: Customer: 1 package com.petcare.pojo.base; 2 3 import java.sql.Date; 4 import java.sql.Timestamp; 5 6 /** 7 * Created by frank on 2017/5/7. 8 */ 9 10 public class Customer { 11 private Long customerId; 12 private String account; 13 private…
学习资料:<Activiti实战> 第七章  Spring容器集成应用实例(五)普通表单 第六章中介绍了动态表单.外置表单.这里讲解第三种表单:普通表单. 普通表单的特点: 把表单内容写在表现层(JSP.JSF.HTML)文件中 一个用户任务对应一个页面 业务数据和流程数据分离 适用于业务相对固定但复杂.流程相对固定但表现层变化多的情况 因为普通表单中,业务数据和流程数据是分离的,所以存在统一事务管理的问题.要保证Activiti和业务数据操作在同一个事务中执行.前面集成Spring时的事务管…
第一次写博客,主要也是记录给自己看的,可能很多比较熟的地方就没注释 用maven构建,ssh框架都是选用的最新的release版(感觉还是不要用beta),环境jdk1.8 tomcat8.0 mysql5.7.11 maven配置 pom.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <project xmlns="http://maven.ap…
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean de…
死磕Spring源码之AliasRegistry 父子关系 graph TD; AliasRegistry-->BeanDefinitionRegistry; 代码实现 作为bean定义的最顶层接口,这个接口定义了管理别名的一些方法,主要作用是将名字-别名映射存到内存中.提供查找和校验的接口. public interface AliasRegistry { /** * 注册一个名字的别名 * @param name 定义名 * @param alias 需要注册的别名 * @throws Il…
Spring - 4.2.3 // name,alias存储容器 ConcurrentHashMap <alias,name>private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>(16);// 注册alias别名public void registerAlias(String name, String alias)1. 检查 name,alias 是否含有内容…
1. 构造方法注入代码如下:public UserManagerImpl(UserDao userDao) {                                                  this.userDao = userDao;                                    } set注入代码如下:        public void setUserDao(UserDao userDao) {                         …
先说重点,新东家公司的项目框架没有一样是我之前用过的,首先pm和我说的是一套微服务的概念,微服务不同于传统的功能模块实现,他将服务松散化分不到各个系统之间,这样也是实现分散压力的一种. 微服务是由springcloud 和 springboot组合使用,其中最主要的是springcloud的zookeeper管理消息分发与订阅,springboot为了简化配置,springcloud基于springboot加快开发进程.那么spring integration是什么东西呢.只要一个词就能解释,集…
定时任务之前一直用的是quartz之类,但是注意到Spring中其实也提供了一种简单的调度注释@Scheduled,也就想尝一下鲜.. 代码示意如下: @Component @EnableScheduling public class AsyncTaskHandlerTask { @Scheduled(fixedDelay = 1000) public void task1() { //输出日志 } @Scheduled(fixedDelay = 1000) public void task2(…
对于使用过Spring Boot的开发者来说,程序启动的时候输出的由字符组成的Spring符号并不陌生.这个是Spring Boot为自己设计的Banner: 1.    .   ____          _            __ _ _ 2.   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \ 3.  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 4.   \\/  ___)| |_)| | | | | || (_|…
转自:https://blog.csdn.net/webzhuce/article/details/54564019…
beans包的层级结构 src/main/java:用于展现Spring的主要逻辑 src/main/resources:用于存放系统的配置文件 src/test/java:用于对主要逻辑单元进行测试 src/test/resources:用于存放配置测试用的文件 核心类介绍: 1.DefaultListableBeanFactory XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个Bean加载的…
BeanFactory的基本类体系结构(类为主):…
上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactory的基本类体系结构(类为主): 上图可与 Spring源码分析——BeanFactory体系之接口详细分析 的图结合分析,一个以接口为主,一个以类为主(PS:Spring的体系结构要分析清楚,不得不曲线救国啊!不然27寸屏幕给我画估计都装不下.). 具体: 1.7层的类体系继承. 2.Abstrac…
beanFactory的继承关系如下图所示: (图片来源:http://www.myexception.cn/software-architecture-design/925888.html) 在上节beanFactory的进化史,我们就讲到了上图的左边部分,这次我们来分析一下图的右边部分.AliasRegistry 是一个用于别名管理的通用接口,BeanDefinitionRegistry继承了该接口. SimpleAliasRegistry作为一个基类,实现了AliasRegistry接口.…