a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 161|回复: 2

[其他] JAVA技巧:关于Spring柜架基础总结

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
Spring柜架基本总结
7 W- |8 u0 }* C. Q* {& k2 W简介:这是Spring柜架基本总结的具体页面,介绍了和javascript,JavaScript Spring柜架基本总结有关的常识、技巧、经验,和一些javascript源码等。! M, l, E+ S& Y% b% R/ y) e
1.界说:
4 T+ |. S8 F* P! n3 PSpring是一个开源的节制反转(IOC)和面向反切(AOP)的容器框架,首要用于简化企业开发,可以合用于任何java应用轨范。使用框架的首要优势在于其分层架构,分层架构许可选择使用哪一个组件,同时为 J2EE 应用轨范开发供给集成的框架。
6 d' b( O5 |" p9 d7 {: v2.利益:
  `4 @$ a% ]' D1 q" B! Z; E1 降低组件之间的耦合度,实现软件各层之间的解耦。
- \: y+ p% S2 q1 ?4 v2 可以使用容器供给众多的处事(事务打点处事、动静处事)。( ~/ W9 L# I3 Z- i
3 容器供给单例模式撑持,开发人员不再需要自己编写实现代码。
8 t2 \& I( p  M. L3 G4 容器供给了AOP手艺,操作它很轻易实现如权限阻挡,运行期监控等功能。
) l1 f2 w8 i% `3 p5 容器供给众多辅作类,使用这些类能够加速应用的开发。5 \# ~/ B: G$ u! V! n2 d7 N0 I* |$ x
6 Spring对于主流的应用框架供给了集成撑持,便于应用开发。
; o. w! k% g* Z: U. T0 S+ D3.模块组成:
+ K; K' R6 j; Y- s" i; P2 j, U1 焦点容器:供给Spring框架的根基功能,BeanFactory是其首要组件,它是工场模式的实现。BeanFactory使用节制反转模式将应用轨范的设置装备摆设和依靠性规范与实
5 r7 P6 S6 D. _: ]际的应用轨范代码分隔。9 o9 U$ c0 R9 ^4 l
2 Spring上下文:是一个设置装备摆设文件,向Spring框架供给上下文信息。
0 g0 i7 @: ?8 m7 F( f3 Spring AOP:直接将面向方面的编程功能集成到Spring框架中,为基于Spring的应用轨范中的对象供给了事务打点处事。+ }( u8 k/ A0 j) n
4 Spring DAO:供给了异常条理结构,可用该结构来打点异常措置和分歧数据库供给商给定的错误信息。简化了错误措置,且大大降低了需要编写的异常代码数目。# K7 O& A: |& ~- ^' z2 F
5 Spring ORM:供给ORM的对象关系工具,驯服Spring的通用事务和DAO异常条理结构。
/ l- Y8 L1 }6 Z( b; e3 G5 g6 Spring Web:成立在应用轨范上下文模块之上,为基于Web的应用轨范供给了上下文,简化了措置多部门请求以及将请求参数绑定到域对象的工作。: S- c- T8 x$ C- i: E
3 P, ~8 U; U' B: m8 b1 D+ A
7 Spring MVC:是一个全功能的构建Web应用轨范的MVC实现。Spring模块构建在焦点容器之上,焦点容器界说了建树、设置装备摆设和打点bean的体例。每个模块都可以零丁存在,也可以与其他模块连系实现。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:28:24 | 显示全部楼层

JAVA技巧:关于Spring柜架基础总结

</p>不经意找到一个很不错的例子来声名Spring框架的浸染:1 F3 t6 v& J) h+ n% x* N
首先写下两个Bean类:! ^  J; R. B3 Q1 ?0 w/ l
ExampleBean类:, v* e0 s' ?8 S" f
public class ExampleBean {' @* ~% m. A- X: \0 X- n+ H
private String psnName=null;
. H/ e7 A7 O( Z7 \private RefBean refbean=null;
' k% L* R& K4 c. @7 y) t6 jprivate String addinfo=null;
; m, J. y8 ?) I: M9 ypublic RefBean getRefbean() {/ D8 q2 O2 v. m9 J  X) z+ c7 W% g1 Q( U
return refbean;
% p6 x  M7 L9 ?2 V0 n& H}/ i0 i' [: e( i  i- V, V3 D
public String getAddinfo() {
5 ?6 w7 c+ c" G8 b" G3 Creturn getRefbean().getAddress()+getRefbean().getZipcode();; E0 ~/ u: z/ g
}
7 @; O; F' l, V3 x. Zpublic String getPsnName() {' y; C& j; `9 [7 @4 S
return psnName;
- h' ^0 [4 O% ^, R* V. D/ y3 w}
4 `  Y) h/ p8 o$ u1 p: opublic void setPsnName(String psnName) {
5 C% g* K1 t) M2 p$ x9 j" O' E+ Pthis.psnName = psnName;
& W, e( |  o) O3 O. T, w3 s9 |+ \- a( v}
4 i& m7 r: G4 g! Gpublic void setRefbean(RefBean refbean) {# b8 }! f" L$ Z1 f+ O% [/ z, J6 x/ C0 n
this.refbean = refbean;
8 F- |6 X1 E8 }: @& L}
, i# d1 w9 ^0 X$ l$ Z3 z& O! ]: |
6 Q  |! T( r5 U& ~% tpublic void setAddinfo(String addinfo) {
7 U5 ]& T5 D, fthis.addinfo = addinfo;" g) k3 \: H- n  N& q& C
}
* w0 E; |2 d$ z, F  F) c}
1 \  ?& a" [. ?RefBean类:
# c; R5 _4 S  wpublic class RefBean {
* H1 N% ~2 Y/ b6 o% l. t3 L$ Gprivate String zipcode=null;
& v; `$ Q) i+ U9 Z6 w  ?% Y* Xprivate String address=null;
6 Z) N+ ?+ O, Epublic String getAddress() {/ l3 w( o3 b' i( `3 [$ C
return address;4 O7 {9 Q! l# N2 a% O
}
$ y+ a4 F) \8 [public void setAddress(String address) {% X5 P* i8 \9 n1 b4 I8 e
this.address = address;
$ u/ s  i2 Y5 L9 \& R}+ G3 v  r. K' }" I2 ~
public String getZipcode() {/ B1 x! g4 t2 n' |6 b! a
return zipcode;, m, T7 Z$ M, M: e8 z; u; I
}
* h; r; R6 z. C3 Upublic void setZipcode(String zipcode) {
( W7 m. J( y4 Othis.zipcode = zipcode;
( l  U4 e$ h/ x$ D% r}1 S: `5 n6 h! Y7 r$ P
}& I7 G) ?8 l" K8 y4 X
其xml设置装备摆设文件 Bean.xml:) [' d; j( N/ F8 a1 }* F/ S
《?xml version=”1.0″ encoding=”UTF-8″?》: |' |0 L# S& O
《!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”6 |9 N! b* W  o. V% b9 A
“http://www.springframework.org/dtd/spring-beans.dtd”》/ Y1 h6 J/ _! h, r6 Y

, ~! _% Z1 T. k& Z5 m《beans》
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 12:28:25 | 显示全部楼层

JAVA技巧:关于Spring柜架基础总结

</p>《bean id=”exampleBean” class=”test.ExampleBean”》$ w- P1 {) E! g3 Z0 P
《property name=”psnName”》《value》xkf《/value》《/property》
; r5 Y* g# [; _$ c2 J; ^! u1 t+ Q《property name=”refbean”》
9 L; i+ ~2 |9 p5 O《ref bean=”refBean”/》
. j# B' f7 a4 ]: p1 e《/property》9 F: h8 h; `) c8 C7 u' j( M2 D- x
《/bean》7 t" C" P! p+ R/ _0 k7 e5 s
《bean id=”refBean” class=”test.RefBean”》
) b  a3 |. ~: g7 P2 G- ]《property name=”address”》《value》BeiJing《/value》《/property》. F1 ]7 Z7 S3 U. p
《property name=”zipcode”》《value》100085《/value》《/property》
. v( d" D+ S/ W6 t' d9 v8 e! [6 m! A《/bean》" ~" @6 T0 h8 b- s
《/beans》$ l: x3 r% k$ R: {
测试类Test:) U1 S+ ?; [0 K, F/ K4 K: x: ?
public class Test {
- n; H4 T5 A/ Epublic static void main(String[] args){
7 P2 y4 H1 ^  y0 O) \: ftry{3 b; }& B1 ]& J5 s
Resource input = new ClassPathResource(“test/Bean.xml”);6 U' X3 C0 q3 [3 E3 r
System.out.println(“resource is:”+input);, y0 k; R( N2 E) E
BeanFactory factory = new XmlBeanFactory(input);( A# y& k/ q: d% ]
ExampleBean eb =
3 b8 n1 q, j9 ~. g+ D5 \(ExampleBean)factory.getBean(“exampleBean”);7 w- s  z( o, e; F  I/ `: J
System.out.println(eb.getPsnName());
  w  g# |% n0 Q' G9 T' ]" I$ LSystem.out.println(eb.getAddinfo());
6 X3 ]! k+ B) p$ a* U* R}' x+ _3 u% @  ~
catch(Exception e){
7 T, ]- f  T5 w3 N+ C  x6 b1 }e.printStackTrace();
8 ]7 b: n  S) M; D}, W0 o% m% g0 f
}5 t7 s& n' Z4 k; B2 X
这样,经由过程BeanFactory的getBean体例,以及xml设置装备摆设文件,避免了在test类中直接实例化ExampleBean,消弭了应用轨范(Test)与处事(ExampleBean)之间的耦合,实现了IOC(节制反转)或者说依靠的打针(Dependency Injection)。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 11:38 , Processed in 0.226039 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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