现在都是在springboot 中 集成 spirng,那我们就从springboot 开始. 一:springboot 启动main 函数 public static void main(String[] args) throws Exception { SpringApplication.run(AuditCenterWebApp.class, args); } 二:跟踪下来,会进入到springAppliaction  的 run(String... args) 方法. public Co…
一.容器 1. 容器 抛出一个议点:BeanFactory是IOC容器,而ApplicationContex则是Spring容器. 什么是容器?Collection和Container这两个单词都有存放什么东西的意思,但是放在程序猿的世界,却注定是千差万别.Collection,集合,存放obj instanceof Class为true的一类对象,重点在于存放:Container,容器,可以存放各种各样的obj,但不仅仅是存放,他被称为容器,更重要的是他能管理存放对象的生命周期和依赖. 容器:…
  Spring Boot 一个重要的特点就是自动配置,约定大于配置,几乎所有组件使用其本身约定好的默认配置就可以使用,大大减轻配置的麻烦.其实现自动配置一个方式就是使用@Enable*注解,见其名知其意也,即"使什么可用或开启什么的支持". Spring Boot 常用@Enable* 首先来简单介绍一下Spring Boot 常用的@Enable*注解及其作用吧. @EnableAutoConfiguration 开启自动扫描装配Bean,组合成@SpringBootApplica…
一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记录. 2.Mybatis整体架构 二.Spring Boot整合Mybatis + Druid 1.在应用中导入maven依赖如下: <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</gro…
我们前面的三篇博文,简单易懂的介绍了为什么要使用IOC[实例讲解](二).和Spring的IOC原理[通俗解释](三)以及依赖注入的两种常用实现类型(四),这些都是刚开始学习Spring IoC容器时的基础内容,当然只有有了这些基础,我们才能走到今天更加详细的解析Spring的源码,深入理解IOC. 这篇我先简单的复习一下IoC,然后根据实例介绍IoC最基本的原理.废话少说,下面我们开始这篇博文的话题: 什么是IoC IoC容器,最主要的就是完成对象的创建以及维护对象的依赖关系等. 所谓控制反转…
授人以鱼不如授人以渔,首先声明这篇文章并没有过多的总结和结论,主要内容是教大家如何一步一步自己手动debug调试源码,然后总结spring如何解决的循环依赖,最后,操作很简单,有手就行. 本次调试 是使用@Autowired注入,通过来调试源码看spring如何解决的循环依赖问题. 首先创建一个简单的springBoot项目,引入spring-boot-test包即可.可以使用idea提供的spring官网推荐的快速创建. maven依赖 <dependency> <groupId>…
前言 在Spring中AOP是我们使用的非常频繁的一个特性.通过AOP我们可以补足一些面向对象编程中不足或难以实现的部分. AOP 前置理论 首先在学习源码之前我们需要了解关于AOP的相关概念如切点切面等,以及如何使用AOP,这里可以看我之前的文章:Spring系列之AOP的原理及手动实现 创建AOP相关对象 对于Java这种面向对象语言来说任何功能的实现都是依赖于对象,AOP也不例外. 首先我们先来准备好在配置文件中配置好AOP相关的属性. spring.xml <bean id="as…
CSDN:码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51957819 前言 Retrofit用法和介绍的文章实在是多的数不清,也有很多介绍其内部原理的,但是看过之后,还是让很多人云里雾里, 本篇文章旨在通过自我实现一个自定义的Retrofit,来熟悉了解其Retrofit的内部原理.也帮助针对那些项目很稳定,解决迁移API接口带来的难度问题. 如果对Retrofit不熟悉的请先阅读Retrofit全介绍: Retrofi…
make解析 服务容器对对象的自动解析是服务容器的核心功能,make 函数.build 函数是实例化对象重要的核心,先大致看一下代码: public function make($abstract) { $abstract = $this->getAlias($abstract); if (isset($this->deferredServices[$abstract])) { $this->loadDeferredProvider($abstract); } return parent…
服务容器的绑定 bind 绑定 bind 绑定是服务容器最常用的绑定方式,在 上一篇文章中我们讨论过,bind 的绑定有三种: 绑定自身 绑定闭包 绑定接口 今天,我们这篇文章主要从源码上讲解 Ioc 服务容器是如何进行绑定的. /** * Register a binding with the container. * * @param string|array $abstract * @param \Closure|string|null $concrete * @param bool $s…