关于java:Spring总结

Spring蕴含哪些模块?

  • spring core:提供了框架的根本组成部分,包含管制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)性能。
  • spring beans:提供了BeanFactory,是工厂模式的一个经典实现,Spring将治理对象称为Bean。
  • spring context:构建于 core 封装包根底上的 context 封装包,提供了一种框架式的对象拜访办法。
  • spring jdbc:提供了一个JDBC的形象层,打消了繁缛的JDBC编码和数据库厂商特有的错误代码解析, 用于简化JDBC。
  • spring aop:提供了面向切面的编程实现,让你能够自定义拦截器、切点等。
  • spring Web:提供了针对 Web 开发的集成个性,例如文件上传,利用 servlet listeners 进行 ioc 容器初始化和针对 Web 的 ApplicationContext。
  • spring test:次要为测试提供反对的,反对应用JUnit或TestNG对Spring组件进行单元测试和集成测试。

IOC

IOC:管制反转
是指将创建对象的控制权转移给Spring容器,并由Spring容器来治理对象与对象之间依赖关系,实现了对象与对象之间的关系的松耦合

Spring IOC 负责创建对象,治理对象(通过依赖注入(DI),拆卸对象,配置对象,并且治理这些对象的整个生命周期

外围:bean工厂,形象工厂模式

形象工厂模式解析:

  • an工厂:提供了bean的创立性能,提供了对bean生命周期的治理,治理了bean与bean之间的依赖关系
  • 整合其余框架,在配置文件中配置其余框架对象须要的参数就能够应用,不须要关怀其具体如何创立(如一些对象的创立须要先实例化其余对象)
  • 本人编码时,能够更好的面向接口编程,因为接口的实现类交由spring注入,接口的调用者不须要关怀实现类的具体,后续实现类的逻辑批改时,接口调用者不须要改代码

AOP

AOP:面向切面编程
针对一些多个中央会用到的公共的行为和逻辑,抽取并封装为一个可重用的模块,并应用动静代理技术,应用反射创立指标类的代理类,在执行指标类办法的前后,可执行织入进去的切面逻辑

长处:
缩小零碎中的反复代码,进步了代码的可维护性
用于事务处理、日志记录、权限认证等

留神点:
Spring是一个容器,但凡在容器里的对象才会有Spring所提供的这些服务和性能
Spring对承受容器治理的全副的bean,默认采纳单例模式治理

AOP中的名词:

BeanFactory 和 ApplicationContext有什么区别?

  • BeanFactory是Spring最底层的容器接口,定义了Bean工厂的很多根底性能,如读取bean配置文档,治理bean的加载,治理bean的申明周期,保护bean之间的依赖关系。
  • ApplicationContext继承了BeanFactory,并提供了一些扩大性能,如反对国际化、提供在监听器中注册bean事件等
  • 利用场合咱们个别间接应用ApplicationContext

获取ApplicationContext,手动获取Bean

1、实现接口ApplicationContextAware
阐明:实现该接口的setApplicationContext(ApplicationContext context)办法,并保留ApplicationContext 对象。
Spring初始化时,会通过该办法将ApplicationContext对象注入。

2、通过Spring提供的工具类获取ApplicationContext对象

// Spring中获取ServletContext对象,一般类中能够这样获取
ServletContext sc = ContextLoader.getCurrentWebApplicationContext().getServletContext();
 
// servlet中能够这样获取,办法比拟多
ServletContext sc = request.getServletContext():
ServletContext sc = servletConfig.getServletContext();  //servletConfig能够在servlet的init(ServletConfig config)办法中获取失去
 
 
/* 须要传入一个参数ServletContext对象, 获取办法在下面 */
// 这种办法 获取失败时抛出异样
ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
// 这种办法 获取失败时返回null
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sc);

3、继承抽象类ApplicationObjectSupport
阐明:抽象类ApplicationObjectSupport提供getApplicationContext()办法,能够不便的获取到ApplicationContext。
Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)办法将ApplicationContext 对象注入。
4、继承自抽象类WebApplicationObjectSupport
阐明:相似下面办法,调用getWebApplicationContext()获取WebApplicationContext
5、在初始化时保留ApplicationContext对象

1 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); 2 ac.getBean("beanId");

Spring 框架中都用到了哪些设计模式?

  1. 工厂模式:BeanFactory就是简略工厂模式的体现,用来创建对象的实例;
  2. 单例模式:Bean默认为单例模式。
  3. 代理模式:Spring的AOP性能用到了JDK的动静代理和CGLIB字节码生成技术;
  4. 模板办法:用来解决代码反复的问题。比方. RestTemplate, JmsTemplate, JpaTemplate。
  5. 观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态产生扭转时,所有依赖于它的对象都会失去告诉被制动更新,如Spring中listener的实现–ApplicationListener。
  6. 责任链模式:SpringMVC拦截器的实现

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理