Spring学习之Spring之旅


创建Spring的目的是用来替代更加重量级的企业级Java技术。

Spring的bean容器

1.1简化Java开发

spring的四种关键策略

  1. 基于POJO的轻量级和最小侵入性编程;
  2. 通过依赖注入和面向接口实现松耦合;
  3. 基于切面和惯例进行声明式编程;
  4. 通过切面和模板减少样板式代码。
    这四种策略的目的是为了降低Java开发的复杂性。

POJO详解

Spring不会在POJO上有任何不合理的要求

public class HelloWorld{
    
    
	public String hello(){
    
    
		return "helloWorld";
	}
}

这个代码没有任何地方显示他是一个spring组件,他是一个简单的POJO类。Spring的非侵入编程模型意味着这个类在Spring应用和非Spring应用中都可以发挥同样的作用
Spring赋予POJO魔力的方式之一就是通过DI来装配它们

依赖注入(DI)

使用依赖注入的目的:让代码变得非常简单且更容易理解和测试。代码之间的耦合度相对于之前的POJO更加低。而之前的JOPO代码都是属于紧耦合的。

依赖注入这么实现
  1. 构造器注入
  2. 属性注入
  3. 借口注入

Spring容器类型

  1. bean工厂
    由org.springframework. beans.factory.eanFactory接口定义,他是最简单的容器,提供基本的DI 支持。
  2. 应用上下文
    由org.springframework.context.ApplicationContext接口定义,他是基于BeanFactory构建,他提供应用框架服务,这种类型更加受欢迎。

    应用上下文

    • AnnotationConfigApplicationContext: 从一个或多个基于Java的配置类中加载Spring应用上下文。
    • AnnotationConfigWebApplicationContext: 从一个或多个基于Java的配置类中加载Spring Web应用上下文。
    • ClassPathXmlApplicationContext: 从类路径下的一个或多个XML配置文件中加载上下文定义, 把应用上下文的定义文件作为类资源。
    • FileSystemXmlapplicationcontext: 从文件系统下的一个或多个XML配置文件中加载上下文定义。
    • XmlWebApplicationContext: 从Web应用下的一个或多个XML配置文件中加载上下文定义。

Bean的创建和加载

  1. Spring对bean进行实例化;
  2. Spring将值和bean的引用注入到bean对应的属性中;
  3. 如果bean实现了BeanNameAware接口, Spring将bean的ID传递给setBean-Name()方法;
  4. 如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory()方法, 将BeanFactory容器实例传入;
  5. 如果bean实现了ApplicationContextAware接口, Spring将调用setApplicationContext()方法, 将bean所在的应用上下文的引用传入进来;
  6. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的post-ProcessBeforeInitialization()方法;
  7. 如果bean实现了InitializingBean接口, Spring将调用它们的after-PropertiesSet()方法。 类似地, 如果bean使用initmethod声明了初始化方法, 该方法也会被调用;
  8. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的post-ProcessAfterInitialization()方法;
  9. 此时, bean已经准备就绪, 可以被应用程序使用了, 它们将一直驻留在应用上下文中, 直到该应用上下文被销毁
    10.如果bean实现了DisposableBean接口, Spring将调用它的destroy()接口方法。 同样, 如果bean使用destroy-method声明了销毁方法, 该方法也会被调用。

Spring的核心模块

Spring六大定义良好的模块

1、测试模块---Test
2、Spring核心容器---Beans、Core、Context、Expression、Context support
3、面向切面编程---AOP、Aspects
4、Instrumentation---Instrument、Instrument Tomcat
5、数据访问与集成---JDBC、ORM、OXM、JMS、Transaction、Messaging
6、Web与远程调用---Web、Web servlet、Web  portlet、WebSocket

Spring 核心容器

容器是Spring框架最核心的部分, 它管理着Spring应用中bean的创建、配置和管理。

Spring AOP 模块

在AOP模块中, Spring对面向切面编程提供了丰富的支持。 这个模块是Spring应用系统中开发切面的基础。AOP可以帮助应用对象解耦。、

数据访问与集成

该模块使我们的数据库代码变得简单明了, 并且可以避免因为关闭数据库资源失败而引发的问题。

Web与远程调用

该模块还提供了多种构建与其他应用交互的远程调用方案;面向用户的Web应用。

Instrumentation

Spring的Instrumentation模块提供了为JVM添加代理(agent) 的功能,它为Tomcat提供了一个织入代理, 能够为Tomcat传递类文件, 就像这些文件是被类加载器加载的一样

测试模块

测试模块以致力于Spring应用的测试,Spring为使用JNDI、 Servlet和Portlet编写单元测试提供了一系列的mock对象实现。

猜你喜欢

转载自blog.csdn.net/weixin_43691960/article/details/112826512