功能说明 该步骤实现的功能包括: 1. 启动程序时,将@ComponentScan加载的类,创建对象并放在容器里面. 2. 通过ApplicatoinContext的getBean()方法获得容器里面的对象. (放在下一篇文实现) 实现步骤 1.定义一个扫描注解@ComponentScan package ioc.core.annotation; import java.lang.annotation.Documented; import java.lang.annotation.Element…
实现功能 以上的代码我们发现.我们都是将@ComponentScan扫描的路径下的所有类都加载到容器中的. 而实际需求,我们并不希望所有的类都创建对象,而是加了组件注解@Controller,@Service,@Repository,@Component的类才创建对象 而不加这些标识的类不需要创建对象. 所谓本章就是实现通过组件注解限制哪些类是可以创建对象的,哪些是不可以的. 实现思路 根据获得的类全限制名,获得它的Class对象.通过Class对象判断类的声明上是否有组件注解.有就创建对象,没…
实现功能 1.我们看到@ComponentScan注解一个开始定义就是需要支持,扫描多个包,将多个包的类名获取到.现在就实现这个功能. 实现思路 根据传入的字符串数组,获得多个包下的类全限制名. 实现步骤 --基于之前的代码-- 1.在PackageUtils.增加一个扫描多个包的方法 /** * 支持同时扫描多个包的路径下的类全限制名以及其子包的所有类的全限制名 包名直接使用逗号分割 * * @param packageNames:传入多个包名 * @param isRecursion:是否扫…
实现功能 --前面实现的代码-- 默认的对象名就类名.不符合Java的命名规范.我们希望默认的对象名首字母小写. 实现思路 创建一个命名规则的帮助类.实现将对大写开头的对象名修改为小写开头. 实现步骤 1.创建一个命名规则帮助类 package ioc.core.utils; /** * 创建命名规则帮助类 * * @author ranger * */ public class NamingUtils { /** * 将类名修改为对象名,首字母小写 * * @param className *…
实现的功能 1. 启动程序时,将@ComponentScan加载的类,创建对象并放在容器里面.(查看上一篇文) 2. 通过ApplicatoinContext的getBean()方法获得容器里面的对象. (1)使用getBean("对象名")返回的对象都Object类型 (2)使用getBean("对象名",<对象类型>),返回指定类型的对象 思路说明 在上面的代码的基础上,在AbstractApplicationContext抽象类实现getBean的…
Ioc内核要解决的问题 1.被调用方,在程序启动时就要创建好对象,放在一个容器里面. 2.调用方使用一个接口或类的引用(不用使用new),就可以创建获得对象. 解决这个两个问题的思路 1.定义一个对象容器,用于存储所有的创建的对象. 2.给启动程序时就需要创建对象并放在容器里面的类一个标识,我称为组件注解. 根据三层架构的定义:组件注解分别为 @Controller:表示层的类 @Service:服务层的类 @Repository:持久层的类 @Component:三层架构以外的类 3.定义一个…
先看看 IoC百度百科 优化过程 namespace Test { class Program { static void Main(string[] args) { //场景 某公司客服要回访一些客户 //刚开始 回访的方式只有 打电话 //简单的实现 CustomerService1 cs1 = new CustomerService1(); cs1.Call(); } } public class CustomerService1 { public string Call() { retu…
.container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .container::before,.container::after { content: " "; display: table } .container::after { clear: both } .container::before,.container::after { content:…
控制反转概述 控制反转(Inversion of Control,英文缩写为IoC),就是将代码的调用的控制权,由调用方转移给被调用方. 如图:修改代码A类的代码,才能将B类的对象换成C类.代码的控制权在A类(调用方).我们将这种代码调用的方式,称为强耦合的代码调用. (图2-1) 将上图的需求,修改为使用Ioc的调用代码方式.就是将代码的控制权从调用方法修改为被调用方法,意味着,代码的调用修改被调用方(我们也称为服务方),不用修改调用方的的代码. 如图: (图2-2) Ioc内核就是解决这两个…
Spring框架IOC容器和AOP解析   主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.Spring开源框架的简介  Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部…