设计建设网站公司,天津市建设信息网官网,小型IT网站开发公司,系统学做网站Spring 核心详解 文章目录 Spring 核心详解前言什么是springspring的优点spring用到了哪些设计模式 什么是AOPAOP的实现方式静态代理动态代理 什么是IOCIOC的好处什么是依赖注入 前言
什么是spring
Spring是一个开源的Java/Java EE全功能栈#xff08;full-stack#xff09…Spring 核心详解 文章目录 Spring 核心详解前言什么是springspring的优点spring用到了哪些设计模式 什么是AOPAOP的实现方式静态代理动态代理 什么是IOCIOC的好处什么是依赖注入 前言
什么是spring
Spring是一个开源的Java/Java EE全功能栈full-stack的应用程序框架它提供了广泛的功能来支持企业应用程序的开发。Spring的主要目的是使Java EE开发变得更容易通过使现有的技术更加容易使用促进良好的编程实践例如通过依赖注入和面向切面编程。 spring的优点
通过控制反转(Ioc和依赖注入实现松耦合。支持面向切面Aop的编程并且把应用业务逻辑和系统服务分开。通过切面和模板减少样板式代码。声明式事务的支持。可以从单调繁冗的事务管理代码中解脱出来通过声明式方式灵活地进行事务的管理提高开发效率和质量。方便集成各种优秀框架。内部提供了对各种优秀框架的直接支持如Hessian、Quartz、MyBatis等。方便程序的测试。Spring支持Junit4添加注解便可以测试Spring程序。
spring用到了哪些设计模式
1、简单工厂模式BeanFactory就是简单工厂模式的体现根据传入一个唯一标识来获得 Bean 对象。
2、工厂方法模式FactoryBean就是典型的工厂方法模式。 spring在使用getBean()调用获得该bean时会自动调用该bean的getObject()方法。 每个 Bean 都会对应一个 FactoryBean如 SqlSessionFactory 对应SqlSessionFactoryBean。
3、单例模式一个类仅有一个实例提供一个访问它的全局访问点。Spring 创建 Bean 实例默认是单例的。
4、适配器模式SpringMVC中的适配器HandlerAdatper。
5、代理模式spring 的 aop 使用了动态代理有两种方式JdkDynamicAopProxy和Cglib2AopProxy。
6、观察者模式spring 中 observer 模式常用的地方是 listener 的实现如ApplicationListener。
7、模板模式 Spring 中 jdbcTemplate、hibernateTemplate 等就使用到了模板模式。 什么是AOP
面向切面编程作为面向对象的一种补充将公共逻辑事务管理、日志、缓存等封装成切面跟业务代码进行分离可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关但所有业务模块都会调用的公共逻辑。
AOP的实现方式
静态代理
静态代理代理类在编译阶段生成在编译阶段将通知织入Java字节码中也称编译时增强。
AspectJ使用的是静态代理。缺点代理对象需要与目标对象实现一样的接口并且实现接口的方法会有冗余代码。同时一旦接口增加方法目标对象与代理对象都要维护
动态代理
动态代理代理类在程序运行时创建AOP框架不会去修改字节码而是在内存中临时生成一个代理对象在运行期间对业务方法进行增强不会生成新类。 jdk动态代理 如果目标类实现了接口Spring AOP会选择使用JDK动态代理目标类。代理类根据目标类实现的接口动态生成不需要自己编写生成的动态代理类和目标类都实现相同的接口。JDK动态代理的核心是InvocationHandler接口和Proxy类。 缺点目标类必须有实现的接口。如果某个类没有实现接口那么这个类就不能用JDK动态代理 cglib动态代理 通过继承实现。如果目标类没有实现接口那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIBCode Generation Library可以在运行时动态生成类的字节码动态创建目标类的子类对象在子类对象中增强目标类。CGLIB是通过继承的方式做的动态代理因此如果某个类被标记为final那么它是无法使用CGLIB做动态代理的。 什么是IOC
IOC控制反转由Spring容器管理bean的整个生命周期。通过反射实现对其他对象的控制包括初始化、创建、销毁等解放手动创建对象的过程同时降低类之间的耦合度。
IOC的好处
ioc的思想最核心的地方在于资源不由使用资源者管理而由不使用资源的第三方管理。
第一资源集中管理实现资源的可配置和易管理。
第二降低了使用资源双方的依赖程度也就是我们说的耦合度。
什么是依赖注入
在Spring创建对象的过程中把对象依赖的属性注入到对象中。依赖注入主要有两种方式构造器注入和属性注入。