走近Spring

在Spring框架之前,J2EE为主流的企业级应用开发工具,EJB的学习成本很高,开发效率却不高,需要编写很多重复的代码,这些问题阻止了EJB的继续发展。在这种情况下,Spring应运而生,Spring框架和EJB不同,Spring框架的学习成本非常低,它是一个轻量级的开发框架,更多强调面向对象的设计,而不是让现有的技术变得更复杂。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Spring的核心思想

1、控制反转(IOC)

IOC是一种设计思想,将原本在程序中手动创建的对象的控制权,交由Spring框架来管理,根据配置文件创建及组装对象之间的依赖关系。

举个例子:

在现实生活中,人们要用到一样东西的时候,第一反应就是去找到这件东西,比如想喝新鲜橙汁,在没有饮品店的日子里,最直观的做法就是:买果汁机、买橙子,然后准备开水。值得注意的是:这些都是你自己“主动”创造的过程,也就是说一杯橙汁需要你自己创造。

然而到了今时今日,由于饮品店的盛行,当我们想喝橙汁时,第一想法就转换成了找到饮品店的联系方式,通过电话等渠道描述你的需要、地址、联系方式等,下订单等待,过一会儿就会有人送来橙汁了。

DI(Dependency Injection),依赖注入,和控制反转(IOC)实现的功能时相同的,核心作用是为了减少代码组件之间的耦合度。

依赖注入有三种方式:

①构造器注入
package com.xt.spring
/**
*构造器注入
*/
public class student{
    private String name;
    private int id;
    public student(){};
    public student(int id,String name){
        this.id = id;
        this.name = name;  
    }            
}
<!--构造配置-->
<bean id = "student" class = "com.xt.spring.student">
    <constructor-arg value="1" type="int"></constructor-arg>
    <constructor-arg value="xiaozhang" type="java.lang.String"></constructor-arg>
<bean>
②setter注入
<!--配置setter注入-->
<bean id="student" class="com.xt.spring.student">
        <property name="id" value="1"><property>
        <property name="name" value="xiaozhang"><property>
</bean>   
③接口注入

接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活性、易用性上不如其他两种注入模式,因而在 IOC 的专题世界内并不被看好。

2、面向切面编程(AOP)

将日志、事务、安全等功能代码抽离出来成为单独的工具组件,实现和业务代码的分离,让业务代码显的简洁。在Spring功能配置中将其声明为一个功能切面,然后再告诉Spring再哪些地方,哪些实际使用这些组件。

Spring的特点

1、轻量;2、控制反转;3、面向切面;4、容器;5、框架;6、集成

Spring组成模块

1、核心容器;2、应用上下文(Context)模块;3、Spring的AOP模块;4、JDBC抽象和DAO模块;5、对象/关系映射集成模块;6、Spring的Web模块;7、Spring的MVC框架

通过依赖注入,让Spring自己管理对象的生命周期。而依赖的注入离不开对象生产的容器,容器是Spring框架实现功能的核心,负责对象整个声明周期的管理。

当然,容器只是提供一个管理对象的空间,如何向容器中放入我们所需要的对象,应用上下文为我们解决了这个问题,是一种Spring容器的抽象化表述,常见的ApplicationContex本质上就是一个维护Bean定义以及对象之间协作关系的高级接口。Spring的核心是容器,而容器并不是唯一的,大概分为两类:一种是不常用的BeanFactory,最简单的容器,只提供基本的DI功能;还有一种是继承了BeanFactory派生而来的应用上下文,其抽象接口时AppicationContex。Spring提供了多种类型的容器实现:

  ① AnnotationConfigApplicationContex: 从一个或多个基于java配置类中加载上下文定义,适用于Java注解的方式;

  ② ClassPathXmlApplicationContex: 从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式;

  ③ FileSystemXmlApplicationContex: 从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件;

  ④ AnnotationConfigWebApplicationContext: 专门为web应用准备的,适用于注解方式;

  ⑤ XmlWebApplicationContext:从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。

Spring的优势

1、低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)

2、声明式事务管理(基于切面和惯例)

3、方便集成其他框架(如MyBatis、Hibernate)

4、降低 Java 开发难度

5、Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)

原文地址:https://www.cnblogs.com/xxyxt/p/11390313.html