a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 160|回复: 2

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

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
Spring柜架基本总结
5 s! [  D: ]  J6 F# ^简介:这是Spring柜架基本总结的具体页面,介绍了和javascript,JavaScript Spring柜架基本总结有关的常识、技巧、经验,和一些javascript源码等。1 F. x; m( H5 @
1.界说:
6 P3 |5 q9 j% U/ |Spring是一个开源的节制反转(IOC)和面向反切(AOP)的容器框架,首要用于简化企业开发,可以合用于任何java应用轨范。使用框架的首要优势在于其分层架构,分层架构许可选择使用哪一个组件,同时为 J2EE 应用轨范开发供给集成的框架。3 B" j$ H* [; J7 ~. L
2.利益:1 b1 y' L0 A" C6 c( G, v) |
1 降低组件之间的耦合度,实现软件各层之间的解耦。
* M  i1 b4 x% _' C1 z( u8 T. d% o/ Z0 V2 可以使用容器供给众多的处事(事务打点处事、动静处事)。
% f0 d& d6 C1 J/ C% l8 D3 容器供给单例模式撑持,开发人员不再需要自己编写实现代码。
- n! e  q4 [) U/ y. H4 容器供给了AOP手艺,操作它很轻易实现如权限阻挡,运行期监控等功能。- Q6 i! v& L0 T7 C5 i) U
5 容器供给众多辅作类,使用这些类能够加速应用的开发。3 `% x6 f' ~6 o9 L
6 Spring对于主流的应用框架供给了集成撑持,便于应用开发。
* l2 f6 N2 R3 j* [4 e8 i3.模块组成:8 W+ O  L9 k8 Z. h
1 焦点容器:供给Spring框架的根基功能,BeanFactory是其首要组件,它是工场模式的实现。BeanFactory使用节制反转模式将应用轨范的设置装备摆设和依靠性规范与实! V6 C4 J# b9 `( j# ^3 \0 w- K* s
际的应用轨范代码分隔。
# M6 ?. S* Z& X- d6 f  N* y' t2 Spring上下文:是一个设置装备摆设文件,向Spring框架供给上下文信息。
* z6 [4 _3 J; Y- M3 U9 m% t' u3 Spring AOP:直接将面向方面的编程功能集成到Spring框架中,为基于Spring的应用轨范中的对象供给了事务打点处事。/ g$ {2 L1 m, ?, H
4 Spring DAO:供给了异常条理结构,可用该结构来打点异常措置和分歧数据库供给商给定的错误信息。简化了错误措置,且大大降低了需要编写的异常代码数目。. U/ L5 \1 a) m: k" n
5 Spring ORM:供给ORM的对象关系工具,驯服Spring的通用事务和DAO异常条理结构。5 y. j4 I7 f3 z+ V; B, a
6 Spring Web:成立在应用轨范上下文模块之上,为基于Web的应用轨范供给了上下文,简化了措置多部门请求以及将请求参数绑定到域对象的工作。, p; ^: |5 R; S& ^, H" @6 c+ b
9 `; [2 {9 I4 F
7 Spring MVC:是一个全功能的构建Web应用轨范的MVC实现。Spring模块构建在焦点容器之上,焦点容器界说了建树、设置装备摆设和打点bean的体例。每个模块都可以零丁存在,也可以与其他模块连系实现。
回复

使用道具 举报

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

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

</p>不经意找到一个很不错的例子来声名Spring框架的浸染:4 A* r% b2 P, e7 d2 H+ A; K
首先写下两个Bean类:
5 z9 V" _# p' R4 O- R& l/ _1 Q, xExampleBean类:
: Y6 `* c, |) l. vpublic class ExampleBean {- e. ^5 v1 O5 ?' O; ~) R
private String psnName=null;# g" K! j9 q& c
private RefBean refbean=null;4 [& s5 g+ D! G( W" d
private String addinfo=null;
, F6 H$ W' G9 H/ Y: X8 F# gpublic RefBean getRefbean() {
$ V: {) l6 n% I( M2 ~5 z. W& \' mreturn refbean;
1 x9 K4 r/ @& o3 r, X5 q6 W1 Z7 }}
, W1 I6 |  n; w( Q7 `4 g. o8 mpublic String getAddinfo() {! j, O8 P- B4 t" u, b, `4 ~3 r( X
return getRefbean().getAddress()+getRefbean().getZipcode();
: O2 u% v7 {) J  m/ ?& I}
' K2 @4 s2 c6 `0 }* a/ Xpublic String getPsnName() {
3 a* [% v3 _3 ^! _* Dreturn psnName;
" e, d( U$ P2 U/ R0 |}4 S' W8 c+ t. b7 x0 q. Q9 Q
public void setPsnName(String psnName) {- H( r2 n$ b/ W/ `4 L2 z/ h5 S
this.psnName = psnName;* `2 H- a5 n& ~
}
5 H0 _; a. [0 F! b. qpublic void setRefbean(RefBean refbean) {
9 O9 {' q1 s& ^/ hthis.refbean = refbean;1 g1 l; b7 a% S3 \: s) R
}
- j0 M  h  S! A0 K+ y# s; c1 m3 F( f$ C6 e& ?5 B8 e- l
public void setAddinfo(String addinfo) {. w3 L: l; \" M1 ~8 C
this.addinfo = addinfo;1 x2 v: D3 C( J2 u+ r7 D
}& }+ r% _( |, i5 Y/ T  ]
}
2 K, q4 \* F& e& i" ?* aRefBean类:
6 O: K8 J* q/ }& \( Q6 `4 Upublic class RefBean {: k4 `1 f6 g7 @2 X3 K: ]- S% R
private String zipcode=null;
4 n* P- J4 ^4 C; Q. I. x- F3 l5 P3 aprivate String address=null;2 D$ N  s# z* f; G& O1 E$ V3 k
public String getAddress() {( o5 [$ _" n' m8 A. j# g
return address;' N2 z1 m/ X$ a0 J1 y. ^  l0 W
}: w: d+ h% j9 ]) H6 b
public void setAddress(String address) {( J, m, i, H! {: v8 E
this.address = address;$ C+ N9 |& R3 s# Z$ U' s8 i  e
}, T& [1 j( I" h) q0 F/ O
public String getZipcode() {8 q! q. z  q! M7 v$ k
return zipcode;
' w+ s6 y% U7 g3 {; q% |}& M( J+ k1 R8 w3 f6 c
public void setZipcode(String zipcode) {% r- x8 f$ ~- V' l
this.zipcode = zipcode;
& w! A5 @- Z$ o+ f2 [; I  q( b3 A}
5 M8 L0 Z- \$ D/ H+ c0 f% a5 w}
# C! k! l7 D: A  W其xml设置装备摆设文件 Bean.xml:% r! ~" I5 Y+ a2 c# |+ u& l
《?xml version=”1.0″ encoding=”UTF-8″?》0 |( g+ q9 U3 V1 i8 \
《!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN”
. @2 o* d. p2 {“http://www.springframework.org/dtd/spring-beans.dtd”》% @) P( }) [: y; o' H9 Z/ ~/ V
/ [  g; w8 a/ f9 z
《beans》
回复 支持 反对

使用道具 举报

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

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

</p>《bean id=”exampleBean” class=”test.ExampleBean”》/ b3 o& a; @' y
《property name=”psnName”》《value》xkf《/value》《/property》
8 B2 S9 S' W& j' h' s《property name=”refbean”》
/ Q, X. r% L1 _( X( W' F' X4 o8 [《ref bean=”refBean”/》
$ V' C3 O3 d0 v, J6 N. W$ T# X《/property》) \1 f" q2 ^/ \& v
《/bean》
4 J9 V" X8 V# Q' `- j《bean id=”refBean” class=”test.RefBean”》
- e7 m3 r, @- p$ k! @2 z《property name=”address”》《value》BeiJing《/value》《/property》
% G" _+ @6 T/ I《property name=”zipcode”》《value》100085《/value》《/property》
: ?* i$ D6 D0 k1 I1 N! }《/bean》
! Q; I6 T0 R1 v" C) A4 e3 v% A《/beans》
' |( t- B  [! H8 F/ V测试类Test:0 H" j' i0 d$ M+ s5 d: p( h
public class Test {7 U3 \+ D7 n/ \! A0 F- Q+ v
public static void main(String[] args){
, g# R, t# M. y$ M7 }! }try{" y! w# Z: O( l7 g8 b
Resource input = new ClassPathResource(“test/Bean.xml”);# D' ?3 J- o0 O; N
System.out.println(“resource is:”+input);
8 M( [0 Z1 f& a  JBeanFactory factory = new XmlBeanFactory(input);' v' {* ^& q+ u( _0 i
ExampleBean eb =
- y8 z/ }* Q* @( U- s2 r; C) F. R3 S2 @(ExampleBean)factory.getBean(“exampleBean”);$ ]0 x8 A5 v$ t6 s* F3 I
System.out.println(eb.getPsnName());
: H* ~# g0 |" H+ v/ d& [* NSystem.out.println(eb.getAddinfo());
8 y. S8 J; J- @2 G}# X3 M9 X4 A) q! p! Z3 ~) X/ W
catch(Exception e){# h5 [9 j& n+ }
e.printStackTrace();
' `! E9 _7 u- ~7 b$ P& c/ G}
( E2 J& s5 K% O% O}- R* Q9 u# W7 [8 c/ v2 r
这样,经由过程BeanFactory的getBean体例,以及xml设置装备摆设文件,避免了在test类中直接实例化ExampleBean,消弭了应用轨范(Test)与处事(ExampleBean)之间的耦合,实现了IOC(节制反转)或者说依靠的打针(Dependency Injection)。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 07:58 , Processed in 0.190607 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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