Spring笔记一
来源:互联网 发布:淘宝买到盗版书怎么办 编辑:程序博客网 时间:2024/06/05 03:11
Spring笔记一
Spring的两个核心特性
依赖注入(dependency injection,DI)
面向切面编程(aspect-oriented programming,AOP)
为了降低Java开发的复杂性,Spring采取了一下四种关键策略:
- 基于POJO(Plain Ordinary Java Objects,实际就是普通javabeans,使用pojo名称是为了避免和ejb混淆起来)的轻量级和最小侵入性编程
- 通过依赖注入和面向接口实现松耦合
- 基于切面和惯例进行声明式变成
通过切面和模版减少样板式代码
public class BravaKnight implements Knight{private Quest quest;public BraveKnight(Quest quest) {<----- Quest被注入进来 this.quest=quest;}public void embarkOnQuest(){ quest.embark(); }
上述方法是依赖注入的一种方式,即构造器注入(constructor injection).
BraveKnight没有与任何特定的Quest实现发生耦合,这是一种松耦合。
一个对象只通过接口(而不是具体实现或者初始化过程)来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换
import java.io.PrintStream; public class SlayDragonQuest implements Quest{ private PrintStream stream; public SlayDragonQuest(PrintStream stream){ this.stream=stream; } public void embark(){ stram.println("slaydragonquest");
将SlayDragonQuest交给BraveKnight,将PrintStream交给SlayDragonQuest
创建应用组件之间协作的行为称为装配(wiring)
xml配置方式
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmls:xsi="http://www.w3.org/2001/XMLSchema-instance" xmls:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="knight" class="com.srpinginaction.knights.BraveKnight"><!--注入Quest Bean 在创建时传入了SlayDragonQuest Bean的引用,将其作为构造参数--><constructor-arg ref="quest"/></beans><!--创建SlayDragonQuest --><bean id="quest" class="com.springinaction.knights.SlayDragonQuest"><!--使用了Spring表达式语言(Spring Expression Language),将System.out(这是一个PrintStream)传入到了SlayDragonQuest的构造器中 --><constructor-arg value="#{T(System).out}" /></bean>
java的配置方式
@Configurationpublic class KnightConfig{@Beanpublic Knight knight(){return new BraveKnight(quest());}@Bean public Quest quest(){ return new SlayDragonQuest(System.out);}
阅读全文
0 0
- Spring学习笔记(一)
- Spring学习笔记一
- SPRING笔记一
- Spring 学习笔记 一
- Spring 学习笔记 一
- spring学习笔记一
- spring学习笔记一
- Spring学习笔记一
- Spring学习笔记一
- Spring学习笔记一
- spring学习笔记一
- spring学习笔记一
- spring学习笔记一
- Spring学习笔记一
- Spring 学习笔记(一)
- spring学习笔记(一)
- Spring笔记(一)
- 学习Spring笔记一
- SIFT特征提取分析
- 安装visual studio2010和opencv遇到的问题
- 新手产品经理怎样去选择一款原型工具
- java 链表1
- Android Studio 热键模板常用记录
- Spring笔记一
- SPOJ 27000 BGSHOOT
- android自定义时钟控件
- 初次运行 Git 前的配置
- 欢迎使用CSDN-markdown编辑器
- 用node-webkit把web应用打包成桌面应用
- Educational Codeforces Round 25 A. Binary Protocol
- Java小项目---租车管理系统
- win7下 MongoDB数据库搭建