Java SpringIOC & AOP 概念详解 小白必看 |
您所在的位置:网站首页 › springioc详解 › Java SpringIOC & AOP 概念详解 小白必看 |
本文共 2098 字,大约阅读时间需要 6 分钟。 文章目录 Spring介绍 1.spring是轻量级的开源的JavaEE框架 2.Spring可以解决企业应用开发的复杂性 3.Spring有两个核心部分:IOC、AOP (1)IOC:控制反转,把创建好的对象给Spring进行管理 (2)AOP:面向切面编程,不修改源代码的情况下进行功能增加。 Spring特点1.方便解耦,简化开发。 2.AOP支持 3.方便程序测试 4.方便和其他框架整合 6.降低了API开发难度 IOC IOC底层原理和基本概念inversion for control 控制反转。把对象创建和对象之间的调用过程,交给spring进行管理。 使用目的:为了耦合度降低。 耦合度:也就是两个方法之间的关联程度,越小越好。 类似于图下,如果我去修改了UserDao中的add方法,那么Service层中的方法也需要去修改。 但是当我们去使用了工厂模式,就会去降低耦合度。 ioc接口 BeanFactory1、Ioc思想基于IOC容器完成,ioc就是对象工厂。 2、spring提供ioc容器实现两种方式:(功能相似) (1)**.beanFactory**:ioc容器基本实现,是spring自带 内部使用的,不提供给开发人员使用。 * 加载配置文件的时候,不会去创建对象。在获取对象(使用)才去创建对象。 什么时候用 什么时候创建对象。 (2)ApplicationContext:是BeanFactory接口的子接口,提供更强大的功能,由开发人员使用。 * 加载配置文件的时候,就会去创建对象。 常见的依赖注入三种方式 1、set方法进行注入(在bean中创建属性和创建set方法) 1.创建类,生成属性的set方法 2.在配置文件中创建对象,后使用set方法注入属性 ? ???????? ???????? ???? ?name="bauthor"?value="javaspring"> ?name="bname"?value="tdj"> ?id="book"?class="com.cztu.tdj.spring5.book"> 2、使用有参构造进行注入(1)创建类,定义属性,创建属性的有参构造 (2)在spring的配置文件中注入 ???? ???????? ???????? ????????????????//也可以基于index属性注入,0代表有参构造第一个属性???????? ???? ?index=1?value="120"> ?name="address"?value="120"> ?name="oname"?value="拼多多"> ?id="orders"?class="com.cztu.tdj.spring5.orders">使用注解test时,类必须为public,方法也必须是public!!! 3、p名称空间注入(1)使用p名称空间注入,可以简化基于xml配置方式 1添加p名称空间在配置文件中??????xmlns:p="http://www.springframework.org/schema/p"2使用set方法注入 Bean管理(FactoryBean)1、Spring有两种类型Bean,一中普通bean,还有一种是工厂bean。 2.普通bean:在配置文件中,定义的类型就是返回的类型。** 3.工厂bean:在配置文件中,定义的类型可以和返回类型不一样。 bean作用域: prototype、singleton、session、request singleton 和prototype区别:(1)singleton是单实例,prototype 是多实例对象 (2)设置scpe值为singleton时,加载spring配置文件时会创建单实例对象。 (3)设置scpe值为prototype时,不是加载spring配置文件时会创建实例对象,而是用getBean时才去创建对象 Spring针对bean管理中创建对象提供注解**(1)@Component (2)@Service (3)@controller (4)@Repository 功能一样,都是创建bean实例。但是他们用到不同地方。 AOPAOP:面向切面编程 。不通过修改源代码的方式,在主干功能里添加新功能。 aop底层原理1、aop底层使用了动态代理 (1)有两种情况的动态代理: 1、有接口的情况,使用jdk动态代理 ·创建接口实现类对象,去增强类中的方法 2、没有接口的情况,使用CGLIB动态代理 创建子类的代理对象,去增强类中的方法 aop动态代理实现(jdk)1、使用jdk动态代理,使用Proxy类里的方法创建代理对象 newProxyInstance其中的三个参数:(1)类加载器;(2)增强方法的所在类,这个类实现的接口,支持多个接口;(3)实现这个接口InvocationHandler,创建代理对象,写增强的方法 2、jdk动态代理代码 (1)创建接口,定义方法 (2)创建接口实现类,实现方法 (3)使用proxy类c 基于匿名内部类实现接口; 最后深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 转载地址:https://blog.csdn.net/zbrush_CTT/article/details/128779454 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |