学校网站开发模式,广州模板建站公司,表格制作,太原seo团队1.请简单的说一下IOC#xff0c;AOP
1.1 IOC
控制反转#xff08;IOC#xff09;是一种设计思想#xff0c;就是将原本在程序中需要手动创建对象#xff0c;现在交由Spring管理创建#xff0c;从而降低代码之间的耦合度。
IoC 最常见以及最合理的实现方式叫做依赖注入…1.请简单的说一下IOCAOP
1.1 IOC
控制反转IOC是一种设计思想就是将原本在程序中需要手动创建对象现在交由Spring管理创建从而降低代码之间的耦合度。
IoC 最常见以及最合理的实现方式叫做依赖注入Dependency Injection简称 DI。
DI(Dependecy Inject,依赖注入)是实现控制反转的一种设计模式依赖注入就是将实例变量传入到一个对象中去。
1.2 AOP
AOPAspect oriented programming 面向切面编程AOP 是 OOP面向对象编程的一种延续。
比如业务A和业务B现在需要一个相同的操作传统方法我们可能需要在A、B中都加入相关操作代码而应用AOP就可以只写一遍代码A、B共用这段代码。并且当A、B需要增加新的操作时可以在不改动原代码的情况下灵活添加新的业务逻辑实现。
这样便于减少系统的重复代码降低模块间的耦合度。
常用到AOP的就是安全校验、日志操作、事务操作等给你先定义好然后在想用的地方用。
1.3 静态代理和动态代理
代理的三要素
a、有共同的行为结婚 - 接口b、目标角色新人 - 实现行为----委托类c、代理角色婚庆公司 - 实现行为 增强目标对象行为----代理类静态代理由程序员创建或工具生成代理类的源码再编译代理类。 所谓静态也就是在程序运行前就已经存在代理类的字节码文件代理类和委托类的关系在运行前就确定了。 动态代理动态代理类的源码是在程序运行期间由JVM根据反射等机制动态的生成所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定。
静态代理的特点
1、目标角色固定
2、在应用程序执行前就得到目标角色
3、代理对象会增强目标对象的行为
动态代理的特点
目标对象不固定在应用程序执行时动态创建目标对象代理对象会增强目标对象的行为
1.5动态代理的两种实现方式 JDK 动态代理 CGLIB动态代理
JDK代理与CGLIB代理的区别
1、JDK的动态代理机制只能代理实现了接口的类而不能实现接口的类就不能实现JDK的动态代理。
2、cglib是针对类来实现代理的他的原理是对指定的目标类生成一个子类并覆盖其中方法实现增强但因为采用的是继承所以不能对final修饰的类进行代理。
JDK动态代理实现接口Cglib动态代理继承思想
JDK动态代理目标对象存在接口时执行效率高于Ciglib
如果目标对象有接口实现选择JDK代理如果没有接口实现选择Cglib代理1.6 反射
反射Reflection是Java程序在运行时可以获取任何一个已知名称的类的内部信息包括其修饰符、构造方法、属性、父类、接口、方法等信息并能动态调用类的任意方法和操作类的任意属性。这种动态获取类的信息以及动态调用对象方法的功能称为Java语言的反射机制。
本质是JVM得到class对象之后再通过class对象进行反编译从而获取对象的各种信息。 通过反射可以在运行时动态地创建对象并调用其属性不需要提前在编译期知道运行的对象是谁。
2.Spring中用到了哪些设计模式
工厂设计模式 : Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。代理设计模式 : Spring AOP 功能的实现。单例设计模式 : Spring 中的 Bean 默认都是单例的。模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类它们就使用到了模板模式。包装器设计模式 : 我们的项目需要连接多个数据库而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。适配器模式 :Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。 原文链接