SAP基本知识原创

Spring介绍

Spring 是一个开源框架,是一个分层的 JavaEE 一站式框架。

 

所谓一站式框架是指 Spring 有 JavaEE 开发的每一层解决方案。

 

WEB层:SpringMVC

 

Service层:Spring的Bean管理,声明式事务

 

DAO层:Spring的JDBC模板,ORM模板

 

优点:

 

IOC:方便解耦合

 

AOP:对程序进行扩展

 

轻量级框架

 

方便与其他框架整合

 

Spring使用

Spring开发包解压后的目录介绍:

 

docs: Spring 开发规范和API

 

libs: Spring jar 包和源代码

 

schema: Spring 配置文件的约束

 

 

 

 

 

DataAccess 用于数据访问,WEB 用于页面显示,核心容器也就是IOC部分。

 

 

 

控制反转(IOC)

控制反转(Inversion of Control)是指将对象的创建权反转(交给)Spring。

 

使用IOC就需要导入IOC相关的包,也就是上图中核心容器中的几个包:beans,context,core,expression四个包。

 

 

 

实现原理

传统方式创建对象:

 

UserDAO userDAO=new UserDAO();

 

进一步面向接口编程,可以多态:

 

UserDAO userDAO=new UserDAOImpl();

 

这种方式的缺点是接口和实现类高耦合,切换底层实现类时,需要修改源代码。程序设计应该满足OCP元祖,在尽量不修改程序源代码的基础上对程序进行扩展。此时,可以使用工厂模式:

 

class BeanFactory{

 

    public static UserDAO getUserDAO(){

 

        return new UserDAOImpl();

 

    }

 

}

 

此种方式虽然在接口和实现类之间没有耦合,但是接口和工厂之间存在耦合。

 

使用工厂+反射+配置文件的方式,实现解耦,这也是 Spring 框架 IOC 的底层实现。

 

//xml配置文件

 

//<bean id="userDAO" class="xxx.UserDAOImpl"></bean>

 

class BeanFactory{

 

    public static Object getBean(String id){

 

        //解析XML

 

        //反射

 

        Class clazz=Class.forName();

 

        return clazz.newInstance();

 

    }

 

}

 

IOC XML 开发

在 docs 文件中包含了 xsd-configuration.hmtl 文件。其中定义了 beans schema。

 

<beans xmlns="http://www.springframework.org/schema/beans"

 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 

    xsi:schemaLocation="

 

        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

 

    //在此配置bean

 

    <bean id="userService" class="x.y.UserServiceImpl">

 

    </bean>

 

</beans>

 

调用类:

 

ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

 

UserService userService=(UserService)applicationContext.getBean("userService");

 

userService.save();

 

IOC 和 DI

 

DI 指依赖注入,其前提是必须有 IOC 的环境,Spring 管理这个类的时候将类的依赖的属性注入进来。

上一篇:eclipse配置Beans的约束


下一篇:Idea中找不到Java Application 的xml配置文件问题研究