关于spring:初学者必备Spring框架学习笔记

52次阅读

共计 4207 个字符,预计需要花费 11 分钟才能阅读完成。

Spring 是 Java Web 开发过程中应用较为宽泛的框架,该框架是一个轻量级的利用框架,其弱小的性能以及卓越的性能而受到泛滥开发人员的青睐。

在理论我的项目开发过程中,将服务器分为三层:体现层(Web)、业务逻辑层 (Service)、长久层 (Dao),在目前支流的开发框架中,Spring 对每一层都有独到的解决形式,如在体现层在体现层提供了与 Struts2 框架的整合,长久层中提供了 jdbcTemplate 技术,在业务逻辑层提供了事物治理和日志记录等。

一、Spring 框架的组成


  • 轻量级 J2EE 利用开发框架
  • 次要形成:依赖注入容器,AOP 实现、DAO/ORM 反对、Web 集成
  • Core 封装包:框架的最根底局部,提供 IoC 依赖注入个性。这里的根底概念是 BeanFactory,它提供对 Factory 模式的经典实现来打消对程序性单例模式的须要,并真正地容许从成程序逻辑中分拆散出依赖关系和配置。
  • 构建与 Core 封装包根底上的 Context 封装包,提供了一种框架式的对象拜访办法,有些像 JNDI 注册器。Context 封装包的个性来自于 Beans 封装包,并增加了对国际化(I18N)的反对(如资源绑定)工夫流传,资源装载的形式和 Context 的通明创立,比如说通过 Servlet 容器
  • DAO 提供了 JDBC 的形象层,它可打消简短的 JDBC 编码和解析数据库厂商特有的错误代码。并且,JDBC 封装包还提供了一种比编程性更好的申明性事务管理办法,不仅仅是实现了特定接口,而且对所有的 POJO 都实用。
  • ORM 封装包提供了罕用的“对象 - 关系”映射 API 的集成层。利用 ORM 封装包,能够混合应用所有 Spring 提供的个性进行”对象 - 关系“映射。如简略申明性事务管理。
  • Spring 的 AOP 封装包提供了合乎 AOP(Aspect—oriented-programming)面向切面编程。
  • Spring 的 Web 包提供了根底的针对 web 开发的集成个性,当与 WebWork 或 struts 一起应用 Spring 时,这个包能够与其余框架联合。
  • Spring 中的 MVC 封装包提供了 Web 利用的 Model-View-Controller(MVC)实现。Spring 的 MVC 框架提供了一种清晰的拆散模型。
  • Spring 的 MVC 框架提供了一种清晰的拆散模型,在畛域模型代码和 web form 之间,并且还能够借助 Spring 框架的其余个性。

一头雾水的点击视频:​ ​​https://www.bilibili.com/vide…​​​​

视频简介:

本套 Java 视频教程次要解说了 Spring4 在 SSM 框架中的应用及使用形式。本套 Java 视频教程内容涵盖了理论工作中可能用到的简直所有知识点。为当前的学习打下松软的根底。


二、Spring 框架的作用

典型的利用程序开发过程中,开发人员应用 Struts、WebWork 等应用程序框架开发前端程序,而采纳 JDO、Hibernate 等长久层框架进行数据库操作,应用 Spring IoC 容器(管制反转)对整个零碎中的组件进行配置和治理。

2.1、IoC

管制反转(Inversion of Control),指的是将创痛编程形式中的程序依赖关系的控制权从程序外部转移到程序内部,容许程序员从程序逻辑中拆散出对具体实现的依赖和治理。

管制反转也体现了”面向接口编程”、拆散调用与实现的设计思维。

2.2、依赖注入

由容器动静地将某种依赖关系注入到组件之间。

管制反转也称为”依赖注入“(Dependency Injection DI)

IoC/DI 示例:

依赖注入是 Java 编程思维中”面向接口编程“的体现,因而在设计程序是,对于程序所依赖的组件往往以忌口的模式呈现,而不间接应用具体的实现类:

// 设计接口
public interface PersonLogic{String sysHello();
}
// 应用接口
public class Action{public void execute(){
// 依赖接口的某个实现类的实例来实现解决
system.out.println(person.sayHello());
}
}

2.3、IoC/DI 的实现形式

2.3.1、Type1 接口注入

办法的调用者通过办法参数提供一个接口的实现类(所依赖的组件)

// 在办法参数中应用组件接口
public class DemoAction{public void execute(PersonLogic person){
//Action 的性能实现依赖于通过办法参数传递的 Logic 对象
system.out.println(person.sayHello());
}
}
// 调用办法时,从内部注入所依赖的组件
DemoAction action = new DemoAction();
PersonLogic person = new PersonLogicEnImpl();
action.execure(person);

2.3.2、Type2 设值注入

借鉴 JavaBean 的设计办法,把业务解决对象所以来的其它组件通过 setter 办法传递进来

// 所依赖的组件以属性的模式呈现,并提供相应的 getter、setter 办法
public class DemoAction{
private PersonLogic person;
// 通过设值注入所依赖的组件
public void setPerson(PersonLogic person){this.person = person;}
....
// 调用办法时通过 setter 办法从内部注入所依赖的组件
DemoAction action = new DemoAction();
PersonLogic person = new PersonLogicCnImpl();
action.setPerson(person);
action.execute();

2.3.3、Type3 结构参数注入

在业务解决对象初始化的阶段,就将所以来的其余组件通过构造方法设置好;在初始化阶段实现之后,就能够失去一个残缺的业务对象间接应用。

// 所依赖的组件以属性的模式呈现,并在构造方法中提供
public class DemoAction{
// 所依赖的组件以属性的模式呈现
private PersonLogic person;
// 通过构造方法在初始化阶段取得所依赖的组件
public DemoActionType3(PersonLogic person){this.person = person;}
// 调用办法时通过构造方法从内部注入所依赖的组件
PersonLogic person = new PersonLogicCnImpl();
DemoAction action = new DemoAction(person);
action.execute();

2.4 依赖注入实现形式的比拟

2.4.1、Type1 接口注入

历史悠久,在大量的容器、框架设计中都有采纳,例如 servlet,struts1 等

灵活性、易用性有余,目前依赖注入模式的开发中 Type2、Type3 成为支流

2.4.2、Type2 设值注入

近似于传统的 javabean 模式,对于程序员来说,通过 setter 办法来设置依赖关系更加直观、天然

防止了宏大臃肿的构造函数,特地是在依赖关系简单的状况下不必在构造函数中呈现泛滥的构造函数,在编码中更为简洁

在某些框架中,对构造函数有肯定的限度(往往要求提供一个默认的构造函数)这时 Type3 形式就显得无能为力。

2.4.3、Type3 结构参数注入

完全符合”在结构期即创立一个残缺的、非法的对象“的 java 设计准则

所有的依赖关系在构造方法中集中体现

因为没有 setter 办法能扭转依赖关系,所有组建在创立之后处于绝对”稳固“状态。同时在肯定水平上也对外界屏蔽了依赖关系的细节。

对于简单的依赖关系,能够通过构造方法决定依赖关系注入的程序。

三、利用

3.1、所需包

3.2、applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 id="fruit" class="com.it.spring.type1.Banana"></bean>
  <bean id="song2" class="com.it.spring.type2.Song">
    <property name="songName" value="小苹果"></property>
  </bean>
  <bean id="sing" class="com.it.spring.type2.Sing">
    <property name="song" ref="song2"></property>
  </bean>
  <bean id="song3" class="com.it.spring.type3.Song">
    <property name="name" value="小苹果"></property>
  </bean>
  <bean id="sing3" class="com.it.spring.type3.Sing">
    <constructor-arg index="0" name="song" ref="song3"></constructor-arg>
  </bean>
</beans>

四、总结

Spring 框架的产生
Spring 框架由依赖注入容器、AOP 实现,DAO/ORM 反对、Web 集成等多个局部组成。
Spring 在应用程序中对整个利用零碎中的组件进行配置和治理
IoC 将传统编程形式中的程序依赖关系的控制权从程序外部转移到程序内部, 从程序逻辑中拆散出对具体实现的依赖和治理。
DI 的实现形式中,接口注入呈现最早,但因为灵活性、易用性方面的有余,IoC 畛域不再是支流抉择。
Type2 设值注入和 Type3 结构参数注入都是目前比拟支流的做法,然而因为实现办法的不同,在使用中也有各自的长处。

正文完
 0