a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 354|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导:关于Spring柜架基础总结" A, x! A. s% K3 E
Spring柜架基础总结# ~# t8 z% }1 g. x9 A5 |
简介:这是Spring柜架基础总结的详细页面,介绍了和javascript,JavaScript Spring柜架基础总结有关的知识、技巧、经验,和一些javascript源码等。: q1 A' o2 K$ [6 a+ q2 _$ ^9 `
1.定义:
6 q" y8 X. P% OSpring是一个开源的控制反转(IOC)和面向反切(AOP)的容器框架,主要用于简化企业开发,可以适用于任何java应用程序。使用框架的主要优势在于其分层架构,分层架构允许选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
0 q# T( e3 c+ w2.优点:
/ z) F, b9 Y* V  T& ]% H% L# t1 降低组件之间的耦合度,实现软件各层之间的解耦。
/ b! `0 d, _6 d2 S  T8 R- H2 可以使用容器提供众多的服务(事务管理服务、消息服务)。
2 \4 n4 y6 k! M& ]3 容器提供单例模式支持,开发人员不再需要自己编写实现代码。' X9 u2 r6 t' T" G4 R& }. @+ }
4 容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。
* X8 r% L$ A6 r/ X- u5 容器提供众多辅作类,使用这些类能够加快应用的开发。
# G1 @- `2 Q/ z- M0 z) C, N9 g6 Spring对于主流的应用框架提供了集成支持,便于应用开发。$ k* l# f0 J# U& n0 l% N/ @
3.模块组成:
* T, ]1 Y+ ^& f$ R! R5 K1 核心容器:提供Spring框架的基本功能,BeanFactory是其主要组件,它是工厂模式的实现。BeanFactory使用控制反转模式将应用程序的配置和依赖性规范与实  d5 T& c4 Y' [' x8 a6 G
际的应用程序代码分开。
! b3 n8 P$ T3 C2 Spring上下文:是一个配置文件,向Spring框架提供上下文信息。
: h( V# \/ p3 |/ l2 F6 u3 Spring AOP:直接将面向方面的编程功能集成到Spring框架中,为基于Spring的应用程序中的对象提供了事务管理服务。% c0 R& K: K  {
4 Spring DAO:提供了异常层次结构,可用该结构来管理异常处理和不同数据库供应商给定的错误信息。简化了错误处理,且大大降低了需要编写的异常代码数量。
* R& C! O2 M9 g  ]' E/ |) g5 Spring ORM:提供ORM的对象关系工具,遵从Spring的通用事务和DAO异常层次结构。' |# y; j3 u4 D0 @! F4 w% k
6 Spring Web:建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文,简化了处理多部分请求以及将请求参数绑定到域对象的工作。
5 g& P+ @+ r9 j( q1 s7 Spring MVC:是一个全功能的构建Web应用程序的MVC实现。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式。每个模块都可以单独存在,也可以与其他模块联合实现。- U' O2 E" |5 p8 A, a
不经意找到一个很不错的例子来说明Spring框架的作用:
( N3 h$ r+ ~9 p4 S5 r4 r首先写下两个Bean类:7 t1 z7 q/ o7 o' B* U  H$ ^: h
ExampleBean类:# n+ P) j0 E5 T. S& v
public class ExampleBean {
8 q+ P8 P6 L* J$ Xprivate String psnName=null;6 S- T& t2 N/ ]3 O
private RefBean refbean=null;' z5 k, o- g* T/ l4 Y% h" G
private String addinfo=null;; W3 z& B' t. h8 D! T
public RefBean getRefbean() {4 {' c8 W- L& _4 `6 X* m
return refbean;
. S" @$ r" L% j' q5 U}1 D) ~6 m7 @/ T* i7 k  |8 n6 s
public String getAddinfo() {3 k( _5 L, Z: l
return getRefbean().getAddress()+getRefbean().getZipcode();
3 E+ u- R0 k$ ?: @}
* c8 ]) W7 b8 `& u  B1 k% Rpublic String getPsnName() {( Y% U; i/ \6 Q
return psnName;% p4 N6 t5 v: h# B# \; ?
}  e$ p, d/ h+ D4 d8 }, c) k' o  c
public void setPsnName(String psnName) {* D- t+ _1 t3 a% G7 {* [. x% E
this.psnName = psnName;1 C! L' R) B7 J8 k
}
  ~7 ]3 m7 I$ G5 A1 x' Q  p% upublic void setRefbean(RefBean refbean) {8 z6 o" Y3 D( f: s- u/ F3 k2 |! S
this.refbean = refbean;
7 o8 f2 J, S5 h+ k5 L}% v* B  d2 C  X6 k; ~8 y

/ ^; o$ x, `6 d- J: {public void setAddinfo(String addinfo) {5 a& s* O/ N+ u0 j( K8 ]3 w. Q7 J7 b
this.addinfo = addinfo;( L1 h6 A: u0 e- s4 {
}
( U9 N, R! n7 }1 G/ `8 R' F' y5 M}6 J* Q# c6 R8 ?( |& R( ?$ a
RefBean类:
+ l3 V4 `9 u' N; }+ E) N; B4 [# cpublic class RefBean {# l8 S9 v6 t1 c, h9 n( r8 G
private String zipcode=null;
# r/ S, M# U% \6 {# O! T( X8 B9 ~private String address=null;3 K. G; Q' {9 J* c+ j: e
public String getAddress() {7 i. m- s' Y1 d  ^
return address;( H* Y- _7 Q/ c9 [- T
}$ i# d9 L2 P8 ]% N4 d5 {
public void setAddress(String address) {1 `7 m% b/ d. w, F, m( u' a
this.address = address;
1 v. [  F, M" B! W9 n: g}$ z! {: ^( B1 O" J
public String getZipcode() {6 z# I( [* _6 p, ?
return zipcode;6 h' q6 W6 ?. g! [+ R+ L& I
}0 L4 W7 _7 k3 b0 d1 y$ w, v2 q0 x, |* w
public void setZipcode(String zipcode) {4 z+ r2 g! {3 i4 q7 _
this.zipcode = zipcode;
( y) J# c) |5 u+ ^3 [}
9 v6 h7 G/ o/ Q0 e2 E1 ~' A! u, B}7 A9 {+ X2 f  ]4 P0 {) k$ `1 L9 X
其xml配置文件 Bean.xml:+ Z( Z( Z( v" m
《?xml version=”1.0″ encoding=”UTF-8″?》3 w; f' Z8 O- J
《!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”$ p3 B2 r( o% F4 ^  r. I& d+ y; I" I2 b
“http://www.springframework.org/dtd/spring-beans.dtd”》
! ^. ~& ~7 B. Z" R6 x# ]《beans》
2 E, e+ x. }& T& I2 j9 t4 t, b* v' s《bean id=”exampleBean” class=”test.ExampleBean”》9 e5 y4 I4 u8 V% u
《property name=”psnName”》《value》xkf《/value》《/property》
3 ?# v, e6 [9 p: w; ?7 }4 a, M( x《property name=”refbean”》0 u) ^8 t( h4 \- B5 F$ J' O
《ref bean=”refBean”/》
4 M0 J. n) |" O! C; W8 K《/property》0 r  L' w3 n/ m- }
《/bean》; N2 t# i' X& g* I/ D4 @% _
《bean id=”refBean” class=”test.RefBean”》* q$ t( f& w6 n
《property name=”address”》《value》BeiJing《/value》《/property》! T8 X! i' x, `% M
《property name=”zipcode”》《value》100085《/value》《/property》
. b: h; p1 M3 |《/bean》
4 r! t3 g; g% k8 b+ ]5 u% x《/beans》( L2 W) f  P* |6 R8 h
测试类Test:
, M& Y: q) @, p4 g6 |/ opublic class Test {' J' u+ X0 d" ~! o! I6 c  T
public static void main(String[] args){
- ]: h+ q* \7 N" B7 K: jtry{; T- U0 f. P7 v; ?! N* P; x. n6 r3 x+ t
Resource input = new ClassPathResource(“test/Bean.xml”);. Y# W& g& P6 ]( D  p
System.out.println(“resource is:”+input);
1 o+ X0 d! U2 u3 [BeanFactory factory = new XmlBeanFactory(input);
' ]4 r8 w1 ~8 b) tExampleBean eb =
* X! F: s, `3 s5 v: }$ _2 n% ^7 C(ExampleBean)factory.getBean(“exampleBean”);" b; l8 C9 s+ q# d
System.out.println(eb.getPsnName());3 r) x9 f. s2 l7 M  V3 c7 Y& {
System.out.println(eb.getAddinfo());# W& E! r/ M# r' J7 S
}
/ q" B: u1 n6 a  acatch(Exception e){% e* G- d1 J+ W
e.printStackTrace();' S- i# @' j* e5 q9 E* r  v
}" m5 ]: H9 \! k/ d$ G- U4 N
}3 S5 Z- C/ v) F
这样,通过BeanFactory的getBean方法,以及xml配置文件,避免了在test类中直接实例化ExampleBean,消除了应用程序(Test)与服务(ExampleBean)之间的耦合,实现了IOC(控制反转)或者说依赖的注射(Dependency Injection)。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-26 08:56 , Processed in 0.233002 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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