a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 338|回复: 0

[专业语言] Java认证辅导:关于Spring柜架基础总结

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导:关于Spring柜架基础总结
4 a2 J% d% a) U! x2 v, gSpring柜架基础总结3 u4 K, F$ z+ T
简介:这是Spring柜架基础总结的详细页面,介绍了和javascript,JavaScript Spring柜架基础总结有关的知识、技巧、经验,和一些javascript源码等。
! r* ^  n* k7 ]1.定义:. b. n' y1 }) v4 n! r, I
Spring是一个开源的控制反转(IOC)和面向反切(AOP)的容器框架,主要用于简化企业开发,可以适用于任何java应用程序。使用框架的主要优势在于其分层架构,分层架构允许选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。3 b4 V3 E6 T2 T; i; J. M
2.优点:
0 s; i9 |0 y9 R+ X4 f% N1 降低组件之间的耦合度,实现软件各层之间的解耦。' x) _# ?; E; s+ E7 m
2 可以使用容器提供众多的服务(事务管理服务、消息服务)。
% H6 Y- t6 X6 i3 D/ s2 f3 容器提供单例模式支持,开发人员不再需要自己编写实现代码。, @% e9 z& {7 G1 L# H- E
4 容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。
0 a+ C4 N) ~3 V6 q& V' Q5 容器提供众多辅作类,使用这些类能够加快应用的开发。( a, L3 ]4 j% z$ W% O( x: v& ]5 R
6 Spring对于主流的应用框架提供了集成支持,便于应用开发。
6 G( ?2 H6 w! p- J  R& b3.模块组成:% L" e+ e; P2 u' }" |9 ^8 q8 D2 B
1 核心容器:提供Spring框架的基本功能,BeanFactory是其主要组件,它是工厂模式的实现。BeanFactory使用控制反转模式将应用程序的配置和依赖性规范与实# W4 N5 n, h; b
际的应用程序代码分开。
2 y  k6 d) ^# E5 i! Z: D1 R3 ~/ |2 Spring上下文:是一个配置文件,向Spring框架提供上下文信息。. s; Y" p" v/ i2 j$ z. u
3 Spring AOP:直接将面向方面的编程功能集成到Spring框架中,为基于Spring的应用程序中的对象提供了事务管理服务。
' K- j6 e! X7 \' X2 ~3 `! H7 @3 S4 Spring DAO:提供了异常层次结构,可用该结构来管理异常处理和不同数据库供应商给定的错误信息。简化了错误处理,且大大降低了需要编写的异常代码数量。' N" e( C$ S/ k* A: O( v
5 Spring ORM:提供ORM的对象关系工具,遵从Spring的通用事务和DAO异常层次结构。1 I9 V! J# l# w2 E$ h* h1 ?
6 Spring Web:建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文,简化了处理多部分请求以及将请求参数绑定到域对象的工作。
2 u8 f  z) m$ A7 a# v5 v( a7 Spring MVC:是一个全功能的构建Web应用程序的MVC实现。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。每个模块都可以单独存在,也可以与其他模块联合实现。
1 Q7 b1 l7 b0 y# {* g- N不经意找到一个很不错的例子来说明Spring框架的作用:
) n* j) e3 x; I# R: q, I1 r首先写下两个Bean类:
; @$ \, g7 z) z. i- Y( \. V  TExampleBean类:
: j* U, j' I% R2 {public class ExampleBean {
, X2 ]! N) F% l' J5 Rprivate String psnName=null;
( \, W# ]: m& aprivate RefBean refbean=null;# X* k2 z) {+ H' U- P0 G
private String addinfo=null;( l9 M# J! K0 p7 l& B6 c
public RefBean getRefbean() {, l( M0 Y9 y5 V3 T2 U( O
return refbean;
* F  Z3 @# G) q}3 y. V" a0 Y9 r
public String getAddinfo() {9 H. @7 ~8 V6 T, X. X( y/ j+ I
return getRefbean().getAddress()+getRefbean().getZipcode();* i) F" e" i* v+ ?
}6 H6 H- h; {% A7 G; G2 A
public String getPsnName() {9 f& t0 n$ Y# g' T& X4 V
return psnName;- l$ u5 P( b* f* M. ^, [
}
5 m' |& B6 ]6 t" b$ spublic void setPsnName(String psnName) {. ~- y% N" _3 B% I
this.psnName = psnName;
9 z8 e) n, z0 l1 N- o}
- P& C0 p5 s( Q; ~- t: U! ]public void setRefbean(RefBean refbean) {
2 c1 Z, l. j+ D/ ]% Q: A, J. dthis.refbean = refbean;1 G- B0 |1 Q& y8 U7 q4 b9 n
}
3 s) w7 R. ~. i; I/ |  j# c# j
( Y8 @8 u6 G% J/ n6 A% Z8 |public void setAddinfo(String addinfo) {  Y: Q: l8 B# ^0 X: I' l
this.addinfo = addinfo;5 q* ?/ u1 T5 U: c
}0 C( \$ f/ m; U$ m" k* c9 c! v
}% n2 R. {; x2 I
RefBean类:3 t( M+ X+ K) T' D( D# {
public class RefBean {
: A* c6 `% c6 {. v1 |# Eprivate String zipcode=null;
2 e; {) a: O" O' Jprivate String address=null;# N5 f( @; w' `" y4 G7 J
public String getAddress() {) ?1 ^6 D- F! Z
return address;
' @6 t" S& m1 C& W}% e5 [$ |: A0 }" q
public void setAddress(String address) {9 }* X8 N' u$ }2 B
this.address = address;) j6 J# S7 v& y$ G
}' g! d; f. b3 [: X. T
public String getZipcode() {
! A, W* z; R& R+ Z" |  C! u( s9 greturn zipcode;
  r& @9 d( K( }1 Y) y" `! Q9 G3 S}
$ Q7 K! k, s7 k) Qpublic void setZipcode(String zipcode) {* Z2 Z3 R4 G3 n; V
this.zipcode = zipcode;7 T4 z  @+ n' }- h/ x( a. ~4 Z
}
9 l) i% K% \0 v3 h}
9 G4 _! F7 n6 a9 w- V) _其xml配置文件 Bean.xml:
8 O5 M: i" q( {5 S- s《?xml version=”1.0″ encoding=”UTF-8″?》
2 e4 [# K; N* {9 ?& q3 s9 w, N9 a《!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”6 N" e) S: e' Y0 U3 \' Q1 F
“http://www.springframework.org/dtd/spring-beans.dtd”》
1 r( W# G/ o* L* i5 `& I《beans》& M3 `" F  Z) O1 k5 h
《bean id=”exampleBean” class=”test.ExampleBean”》. G& S! m9 g$ Q0 Y0 Q1 j* W* c
《property name=”psnName”》《value》xkf《/value》《/property》/ ?+ a% D& R& {+ W% M
《property name=”refbean”》5 ?$ y. m/ D, t2 o8 ^2 }" d
《ref bean=”refBean”/》
* M/ Y' [9 V8 u, K# ~  X8 a7 d《/property》3 r' C" ]# ~7 Z! e4 p9 B! K
《/bean》
  L8 z# d# {% ~! Z; q《bean id=”refBean” class=”test.RefBean”》
& t5 _- W4 m2 V! }! \, u' Z1 J《property name=”address”》《value》BeiJing《/value》《/property》; ?- d9 @7 ^  X" W
《property name=”zipcode”》《value》100085《/value》《/property》
' B; k+ s, F; h$ e% k6 F5 `《/bean》
: F& K6 y. d% @# A7 q《/beans》
. x; G' O$ @! m- Q  k: a测试类Test:1 \% Z% \* f' x) j0 Z# j
public class Test {  s7 J7 t4 ~) v" |! L" e
public static void main(String[] args){
1 B5 J( z% t) {0 N" y) L0 \try{& M/ j- G; H0 l) ]
Resource input = new ClassPathResource(“test/Bean.xml”);
8 K! V$ u" Z/ h$ l8 r! pSystem.out.println(“resource is:”+input);3 }2 s8 a6 t3 a6 T/ s8 h& v$ ]
BeanFactory factory = new XmlBeanFactory(input);
7 I9 \+ v5 [5 a* r1 DExampleBean eb =9 {9 @% t, H: H% y8 E
(ExampleBean)factory.getBean(“exampleBean”);* M8 t' K5 Z& c! D' S0 E5 }- `9 j( i+ I
System.out.println(eb.getPsnName());
+ t5 U0 a4 O1 `) v0 jSystem.out.println(eb.getAddinfo());
0 U4 O2 }4 i9 `* m2 |: s5 U}
, s! A& z6 A+ s7 v+ g) ^0 Q( ocatch(Exception e){2 t  N6 z( @% B& ^
e.printStackTrace();* X/ N8 D3 U; F
}
3 s# t# S# v, R( U}
  R- y8 H1 D4 r8 w: T- C5 I# f这样,通过BeanFactory的getBean方法,以及xml配置文件,避免了在test类中直接实例化ExampleBean,消除了应用程序(Test)与服务(ExampleBean)之间的耦合,实现了IOC(控制反转)或者说依赖的注射(Dependency Injection)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-23 14:58 , Processed in 0.166197 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表