Spring实战(一)spring之旅

 Spring实战(一)spring之旅
1.1简化java开发:
  1.1.1:激发pojo的潜能:在基于spring构建的应用中。Spring不会强迫你去实现spring规范的接口或继承spring规范的类(最坏的情况是会添加使用spring的注解),来实现轻量级和最小入侵性编程。
  1.1.2:面向接口和依赖注入(dependency injection,DI)(也叫控制反转(IOC),spring的创始人这么叫,原因是这两个名词是站在不同角度来说的,我的理解是控制反转:对象本来是由程序来控制的,但在spring中交给了容器来处理,继而叫控制反转;依赖注入:站在容器的角度,当一个类需要去依赖另外一个类,则容器会将其需要的类通过配置文件注入到依赖类中,而叫依赖注入):通过DI对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象时进行设定。对象无需自行创建和管理他们的依赖关系。
  1.1.3:面向切面编程(aspect-oriented-programming,AOP):允许你把遍布应用各处的功能分离出来形成可重用 的组件。使这些组件会具有更高的内聚性,更加关注自身的业务。
  1.1.4:使用模板消除样板式代码;
1.2容纳你的bean
 1.2.1使用应用上下文:
      1) . AnnotationConfigApplicationContext: 从一个或多个基于java的配置类中加载Spring应用上下文。
      2) . AnnotationConfigWebApplicationContext: 从一个或多个基于java的配置类中加载Spring Web应用上下文。
      3). ClassPathXmlApplicationContext: 从类路径下的一个或多个Xml配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
      4) . FileSystemXmlApplicationContext: 从文件系统下的一个或多个Xml配置文件中加载上下文定义。
      5) . XmlWebApplicationContext: 从web应用下的一个或多个Xml配置文件中加载上下文定义。
 1.2.2bean的生命周期
  实例化->填充属性->调用BeanNameAware的setBeanName()方法->调用BeanFactoryAware的setBeanFactory()方法->调用ApplicationContextAware的setApplactionContext()方法->调用BeanPostProcesser的预初始化方法->调用InitializingBean的afterPropertiesSet()方法->调用自定义的初始化方法->调用BeanPostProcessor的初始化后方法->Bean可以使用->容器关闭->调用DisposableBean的Destory()方法->调用自定义的销毁方法->结束
   1.Spring对Bean进行实例化;
   2.Spring将值和Bean的引用注入到bean对应的属性中;
   3.若果bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法;
   4.如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入;
   5.如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将bean所在应用上下文的引用传递过来;
   6.如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法;
   7.如果bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()方法。类似的,如果bean使用了init-method声明了初始化方法,该方法也会被调用;
   8.如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法;
   9.此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
   10.如果bean实现了DisposableBean接口,Spring将调用它的destoy()接口方法。同样,如果bean使用destory-method声明了销毁方法,该方法也会被调用。
1.3spring包含
 1.3.1spring模块:
 
Spring 核心容器: 容器是spring框架的最核心的部分,创建,管理和配置bean。该模块中,包括了Spring bean工厂,它为                  spring提供了DI功能。除了bean工厂和应用上下文,该模块还提供了许多企业服务,列如E-mail,JNDI访问,                  EJB集成和调度。
Spring 的AOP模块:在AOP中,Spring对面向切面编程提供了丰富的支持,帮助应用对象解耦,借助AOP,可以将遍布系统的关注点(列如事物和安全)从它们所在应用的对象中解耦出来。
数据访问与集成:简化JDBC编写代码通常导致大量的样板式代码,spring的JDBC和DAO(Data Access Odject)模块抽象了这些这些样板式代码,避免了因为关闭数据库资源失败而引发的问题。Spring还提供了ORM模块,建立在对DAO的支持之上,并为多个ORM框架提供了一种创建DAO的简便方式。spring没有去创建自己的ORM解决方案,而是对多个流行的ORM框架进行了集成,包括Hibernate,Java Persisternce API,Java Data Object和iBATIS SQL Maps.Spring的事务管理支持所有ORM框架以及JDBC。
web与远程调用:spring能够和多种流行的MVC框架进行集成,但它的web与远程调用也自带一个强大的MVC框架。
instrumentation:提供了为JVM添加代理(agent)的功能。具体来讲,它为Tomcat提供了一个植入代理,能够为Tomcat传递类文件,就像这些文件是被类加载器加载的一样。
测试:Spring提供了测试模块以致力于Spring应用的测试。spring为使用JNDI,Servlet和Portlet编写单元测试提供了一系列的mock对象实现。对于集成测试,该模块为加载Spring应用上下文中的bean集合以及与Spring上下文中的bean进行交互提供了支持。


1.3.2 Spring Portfolio
          Spring Web Flow: 建立Spring MVC框架之上,它为基于流程的会话式web应用提供了支持。
Spring Web Service:  为了满足服务的契约而编写的。
Spring Security: 利用Spring AOP和Spring Security为Spring应用提供了声明式的安全机制。
Spring Integration:  提供多种通用应用集成模式的Spring声明式风格实现。
Spring Batch: 当我们需要对数据进行大量操作时,(如果需要开发一个批处理应用,可以用Spring Batch)。
Spring Data: 使得在Spring中使用任何数据库都变得非常容易。
Spring Social: 社交网络扩展模块
Spring Mobile: 支持移动web应用开发
Spring for Android: 为开发android设备本地应用提供某些简单的支持。
Spring Boot:  Spring极大地简化了众多的编程任务,减少甚至消除了很多样板式代码。Spring Boot大量依赖自动配置 技术,能够消除大部分Spring配置。








猜你喜欢

转载自blog.csdn.net/weixin_40132006/article/details/80600714