java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14866|回复: 61

[java电子书] Spring攻略(第2版)(Spring攻略(第2版)) PDF 电子书 百度云 网盘下载

  [复制链接]
  • TA的每日心情
    开心
    2018-4-8 22:14
  • 签到天数: 1 天

    [LV.1]初学乍练

    1835

    主题

    1837

    帖子

    5517

    积分

    普通会员

    Rank: 2

    积分
    5517
    发表于 2018-12-3 18:08:00 | 显示全部楼层 |阅读模式
    java自学网(www.javazx.com)-java论坛,java电子书推荐:《 Spring攻略(第2版)(Spring攻略(第2版))》; v7 Z% g3 A: P5 B4 D! x& S0 u
    java电子书推荐理由:《Spring攻略(第2版)》以大量的实例,全面透彻地揭示了Spring框架的各项特性以及围绕该框架新推出的许多周边框架,以实际问题―解决方案―具体做法的方式,为读者展示了这一流行框架从基本概念到各种应用,*后到企业集成的各种实际运用,是Spring框架使用者必备的完全指南。 《Spring攻略(第2版)》适合于对Java开发和企业应用集成有一定了解,希望在实际开发中掌握一种全面、快速、可伸缩、可移植的工具平台的开发人员。8 o( j. k8 Q3 K  }: C. Y

    ( [: w* O7 b4 q% i作者:Gary Josh Long Daniel Rubio1 \  `& q( B- e
    出版社:人民邮电出版社1 o9 F% B! l* c8 c/ V9 Z" C
    出版时间:2012-03-01
    7 S/ @* s) }% u) Y* a+ A# ]书籍价格:88.30元
    4 A. e8 w3 s( ^! ^7 S3 y+ y8 X: a' k9 M; W& G

    - l% v! q/ y! {
    1 {# |$ `- F/ q$ T

    $ N' z$ E/ H( a4 F) H" \  z9 l9 Zjava电子书目录:5 H7 G% q1 p$ p
    第1章 Spring简介 1
    * T8 d, }; f/ F0 b$ B8 g- B- ~" c1.1 实例化Spring IoC容器 1% n/ c  V( E4 G9 }' q* g# `. J
    1.1.1 问题 1
    % C* W6 y8 F: i& ?1.1.2 解决方案 1' H! x: O7 s9 @  {& m. g5 [
    1.1.3 工作原理 3' V4 E- Q4 S0 F
    1.2 配置Spring IoC容器中的Bean 43 |6 a! Q/ o2 l" n. g- t
    1.2.1 问题 4
    1 q; |# }) T2 E! w# i' S# k/ ]& V1.2.2 解决方案 4: n& E1 z) P$ ~% }2 Z0 M/ l0 Q. y! I& Q: `
    1.2.3 工作原理 4# \$ Q, ~: o' A( J+ k/ [" t5 M, Y4 Z3 ]
    1.3 调用构造程序创建Bean 147 e- G: R% r6 m7 z
    1.3.1 问题 14
    " ?+ {( z+ V" [4 A. E9 f+ ?1.3.2 解决方案 14: V% k0 c* a- W; ]& A8 _
    1.3.3 工作原理 146 N' ?! |5 ?  V
    1.4 解决构造程序歧义 174 @# _4 ~4 Y* Y, D
    1.4.1 问题 17
    * K# a  U: A' s- }) ^7 C1.4.2 解决方案 17
    * F9 z9 B# I0 i0 G3 h1.4.3 工作原理 17
    : l7 E0 N! l2 k. y6 D" u! L) x1.5 指定Bean引用 20! B2 I1 @5 R4 Q
    1.5.1 问题 20# r: g7 e7 N0 z7 Y, P, A
    1.5.2 解决方案 20! j4 u* G$ E3 b
    1.5.3 工作原理 20  c! B3 F) A! {  ~3 l$ R" T5 q
    1.6 为集合元素指定数据类型 24: W; [8 c$ g/ P5 B8 u3 m
    1.6.1 问题 24
    & \1 y2 u5 }+ W- `9 k# M2 N: n/ y1.6.2 解决方案 24
    3 s$ A/ m. ]4 H% [( }1.6.3 工作原理 249 m4 P: R9 R8 V) z0 b
    1.7 使用Spring的FactoryBean创建Bean 27! t  q$ D" N% r5 k
    1.7.1 问题 27
    3 e9 W% Y2 v" D3 K& R$ m1.7.2 解决方案 27( I1 Q. g+ ~5 E6 c
    1.7.3 工作原理 27( Q, m& m7 a$ o& M5 u7 l
    1.8 使用工厂Bean和Utility Schema定义集合 29
    5 }8 @; I* h( c1.8.1 问题 290 x, C, {3 k  }+ O0 ~
    1.8.2 解决方案 29
    * p* p9 U7 P+ A7 r. P+ q. m& E1.8.3 工作原理 29
    . a% t' y% [6 C. w, n* a% g  ]1.9 用依赖检查属性 31. x8 [* R) f. v8 L
    1.9.1 问题 31
    ; X: ~8 M+ R# j: w6 s. G4 _6 w1.9.2 解决方案 32
    8 Y* X$ [8 w! R3 B9 Z7 p. b$ F1.9.3 工作原理 32
    " }$ Q) ?' f8 I; g7 G- @* i1.10 用@Required注解检查属性 34
    ; p) H0 t& \2 w, ^1.10.1 问题 34
    2 p3 f( @3 X% |% G8 T1.10.2 解决方案 34
    ' D& }6 J( g$ G8 J1.10.3 工作原理 34
    * H3 M8 I; ~3 m% G/ a1.11 用XML配置自动装配Bean 36
    + {$ d' j: E: ~1.11.1 问题 367 z7 }; [3 Y0 Z% i/ {# I/ T
    1.11.2 解决方案 36- c! O4 L4 p: s
    1.11.3 工作原理 376 `0 v4 i& r- q! K0 }1 g
    1.12 用@Autowired和@Resource自动装配Bean 41
    * L: U7 @- d6 Y/ B# F( M( W$ S& X9 w1.12.1 问题 41
    8 ~% U+ d/ b% @; Z1 ~$ j# j1.12.2 解决方案 41
    * {9 g9 U8 g# O5 m+ m& `1 z1.12.3 工作原理 41: e: v. p" }3 m7 ], a% z; I
    1.13 继承Bean配置 47% Q) Y) f  F5 J0 I+ e
    1.13.1 问题 47
    . i/ Q% r8 h4 D: Q1 r+ D1.13.2 解决方案 47
    # K- S! F' f6 {3 H6 Z1.13.3 工作原理 481 z' d4 W) B4 p2 q- \6 s
    1.14 从Classpath中扫描组件 50/ }! h( b3 z: v  S
    1.14.1 问题 502 a! s% I6 Z& k; }6 s  W  [& q
    1.14.2 解决方案 51
    ; W' n0 {+ A8 N6 u( A" J1.14.3 工作原理 512 y/ L% T" z8 [* j$ P
    1.15 小结 567 k# ^) V: V$ `; E& E7 ?, s
    * U" p( z, }5 c0 G
    第2章 高级Spring IoC容器 570 R4 ]) Q" r: b- G; O% Z, b
    2.1 调用静态工厂方法创建Bean 57* |- d  M& m& a+ c2 |
    2.1.1 问题 57% u" i) R6 _9 d3 b
    2.1.2 解决方案 570 ?4 {& C  g( X+ ]0 t+ ]6 `
    2.1.3 工作原理 57
    $ ?4 a8 L! L) Z- W2.2 调用一个实例工厂方法创建Bean 581 l+ N" y& Y! P1 R2 G7 H' Y
    2.2.1 问题 58
    & U: g2 k+ P( R0 {( t2 k2.2.2 解决方案 59# u! _5 C# X* B, `9 N4 U% L  k, O( G! l9 U
    2.2.3 工作原理 599 T4 H& O3 N/ i2 Q
    2.3 从静态字段中声明Bean 60' `' p  Y* a5 c$ ~5 p3 c
    2.3.1 问题 605 o: s. `- ^9 R+ z) T
    2.3.2 解决方案 603 g' h% m) r+ \3 X' F
    2.3.3 工作原理 61
    0 r6 A& v* ~" O% m2 v6 h2.4 从对象属性中声明Bean 62
    ' B* f( A4 @8 u) ?1 m2.4.1 问题 62
    & ~$ ~4 f2 A# k& K8 A+ T2.4.2 解决方案 62
    ; ]+ G5 j# k  e2.4.3 工作原理 62
    ' ]! a5 y; p* J+ B1 M# l7 j2.5 使用Spring表达式语言 64
    ! s1 M$ v9 J+ i5 J) ^2.5.1 问题 64
    4 Z/ r5 C( `9 G  W& {+ g2.5.2 解决方案 64) I% r$ }5 y! U. ^
    2.5.3 工作原理 65
    7 f3 }* X$ x8 i0 s, u2 A% _2.6 设置Bean作用域 695 g! o5 `( I% r9 @: C
    2.6.1 问题 691 }2 ~) x) t7 h9 ^! v
    2.6.2 解决方案 69- ~$ L3 v& [( K- ]$ }$ D7 V
    2.6.3 工作原理 70
    - t& \  Q4 m; B+ z. X2.7 自定义Bean初始化和析构 72
    , T' s3 {0 y: s, @2.7.1 问题 72
    2 Y( r: {1 y0 d, D/ {5 m' f! e  W2.7.2 解决方案 724 N" ]6 I5 x, I7 C5 C" N
    2.7.3 工作原理 72, O2 @" R! b$ d1 v2 U% C
    2.8 用Java Config简化XML配置 77
    3 h) k, w, e7 ~' b5 \$ h  v5 O2.8.1 问题 77
    & w) V  y5 }, |0 p8 }2.8.2 解决方案 775 G* n, Z$ v( K; h! z8 X4 f
    2.8.3 工作原理 77
    5 c! y* G; B4 c& d- a2.9 使Bean感知容器 81: |, Z; x# X8 i: @
    2.9.1 问题 81" m8 n, W# J6 `* C- Y8 I& w
    2.9.2 解决方案 81
    ; c: C- ?# n2 q( I; ~* i2.9.3 工作原理 82+ d- H7 N& G* V% K1 u+ A
    2.10 加载外部资源 82' @8 F% O, I* \' |/ `. U
    2.10.1 问题 82
    + o% Z2 F& H) B6 g* V2.10.2 解决方案 83
    - A& w1 y9 J! c# E# O3 @3 U$ [2.10.3 工作原理 83
    ( y% ~) U# y. o1 U2.11 创建Bean后处理器 85( u3 P, O1 Z0 U& L- ^- O; a, Q
    2.11.1 问题 85$ [* r( E, f3 g+ o- [2 x3 Q
    2.11.2 解决方案 85
    - j" S$ a  A9 m/ k2.11.3 工作原理 86
    # O( q0 v+ |7 n  H6 R# w: K. ?2.12 外部化Bean配置 89
    8 l0 Y- x  C3 S4 I2.12.1 问题 89- L, U& m* R$ ?7 ~# i
    2.12.2 解决方案 89
    * ^- o: l* l# U& `( v  M, o8 R2.12.3 工作原理 90
    1 M4 B5 D1 z3 H$ V! o7 X9 |2.13 解析文本消息 911 {' N. j: P. n
    2.13.1 问题 91
    * R2 U4 g" p" T" @* b2.13.2 解决方案 912 @" X3 B5 p5 C+ \/ ~
    2.13.3 工作原理 91
    + q0 w; \: `" R2.14 使用应用事件进行通信 93
    ; e: I3 G7 J9 i2.14.1 问题 937 V; _, D$ z% a
    2.14.2 解决方案 93
    5 v& u/ ~& g5 I2.14.3 工作原理 94% V- t5 P1 R$ o& G; W6 O' v
    2.15 在Spring中注册属性编辑器 96
    + ^$ a# g. L" O! G" b2.15.1 问题 96  J5 A- {7 A* I. @8 w
    2.15.2 解决方案 96
    : k* \. ?+ W2 c% \: a3 c$ q2.15.3 工作原理 97
    7 }' {. I0 ?$ [3 I; u- K0 T# c' d2.16 创建自定义属性编辑器 991 H8 j8 R0 A4 G
    2.16.1 问题 999 p' @& A  R+ M
    2.16.2 解决方案 100- C/ r( D% h3 A4 X# p6 F& j' _
    2.16.3 工作原理 100& [$ Y/ E! y! C$ u" W; t4 ]
    2.17 使用TaskExecutor实现并发性 101
    ' b/ r4 \3 m/ u2.17.1 问题 101
    3 q2 ]% B% X6 q9 u& Y* u2.17.2 解决方案 101' I3 m9 p& K: o, y  o0 e
    2.17.3 工作原理 1026 Z7 O% f9 @6 r8 w+ y7 l
    2.18 小结 110
    7 u/ ~9 }( X0 w) l5 ^
    8 E* @9 E) C3 H; @$ D第3章 Spring AOP和AspectJ支持 112& p$ O- M- n' j1 d; i! [
    3.1 启用Spring的AspectJ注解支持 113% ?9 z# u% ?# W, d
    3.1.1 问题 113
    ' [& b# O& a2 |7 p& O3.1.2 解决方案 113; A( R3 u6 w' `: }/ j. y) d
    3.1.3 工作原理 113
    * c) t5 B1 @% d# _3.2 用AspectJ注解声明aspect 115
    , s# ^" w. I/ B0 y+ _9 c. ^; B3.2.1 问题 115
    ; j5 u7 }( R5 p3.2.2 解决方案 1152 M: X" y2 f  \* M( H; T6 @
    3.2.3 工作原理 116/ o3 ?1 r& t6 A- O# E
    3.3 访问连接点信息 121
    . J% I* \9 X7 ~3.3.1 问题 121) |* K2 `4 K' o% s$ w8 X/ E
    3.3.2 解决方案 122
    % O' C  O) Z, u7 T3.3.3 工作原理 1227 a9 p4 m! F) }4 i
    3.4 指定aspect优先级 123
    0 V- p4 h# M- Q3.4.1 问题 123  k- X- y* D3 A. G8 k# b7 }
    3.4.2 解决方案 123
    * o2 u. S/ S8 Q2 Z) \; C3.4.3 工作原理 1235 f! b1 A: U  {+ D
    3.5 重用切入点定义 125" V5 V. P& a0 F
    3.5.1 问题 125* r0 w1 n2 p* ]) R% i( c
    3.5.2 解决方案 1253 K+ e* V& L" ^, D8 `/ z
    3.5.3 工作原理 125
    3 \1 S& ?! R7 k+ [, b: |5 L3.6 编写AspectJ切入点表达式 127
    $ C# p9 v% K2 I, j, }' F3 y3.6.1 问题 127
    / u: v) x3 i6 j3 l% q4 w* o1 `3.6.2 解决方案 127
    8 y  e& K/ C, A: t3.6.3 工作原理 128
    ' C- L+ Y3 O* w2 m3.7 在你的Bean中引入行为 1320 M$ t2 D) {' t- M; ?2 ?( d0 k' Q
    3.7.1 问题 132
    0 K( K& K. \" v! K3.7.2 解决方案 1328 z8 a% o7 K; \  j% W3 e
    3.7.3 工作原理 1322 m' F7 v1 u1 O( X% W, a  E6 N
    3.8 为你的Bean引入状态 135
    % O. \1 P& q% N4 T1 _" ~. n3.8.1 问题 135' L0 U4 A" Q( J1 B; @( }( b
    3.8.2 解决方案 135  o$ z- L! ]; V
    3.8.3 工作原理 135; e3 u3 B( d% w! l1 M; l* @5 J
    3.9 用基于XML的配置声明aspect 137$ w, k( u; Q. w7 R. w
    3.9.1 问题 137: f2 t* J) L! p4 b! _
    3.9.2 解决方案 137
    , @& F4 c1 @5 z: o/ x: G3.9.3 工作原理 137( V- H6 H; i2 g8 v( T3 m" I* S
    3.10 Spring中的AspectJ加载时织入aspect 140
    8 u8 N- W* i5 X/ Z& v6 b3.10.1 问题 140
    4 L$ i$ J/ c- W( R7 A! @3.10.2 解决方案 141
    ; ]7 F& q  o0 t4 T$ A4 x! n3.10.3 工作原理 141
    # f# _, v9 P& L! y* d3.11 在Spring中配置AspectJ aspect 146
    0 e4 z5 z) ]/ Y% A' v' E3.11.1 问题 146
    5 e3 q% ^+ \8 j% b8 l3.11.2 解决方案 146
    5 e) u" K) F8 Y3 e6 w' p3.11.3 工作原理 146
    " e  {/ V# z9 d' k) ~. z3.12 将Spring Bean注入领域对象 147% J' d8 }9 |1 y, V+ K5 u, ^2 n
    3.12.1 问题 147
    ; u, b& S: d* L- A1 o3.12.2 解决方案 147
    3 N5 R( o; ~; o# R. Q3.12.3 工作原理 148
    ) K" D, H6 t5 Z* _* A1 G- d3.13 小结 1510 i+ A' P5 f5 a8 J

    7 `: h3 D- h" N5 q$ U/ z& n9 A! @第4章 Spring中的脚本 1523 @% J% j0 l+ [
    4.1 用脚本语言实现Bean 152
    + u  O3 i2 l' \0 T/ H4.1.1 问题 1520 ]; d& [0 l# O" i# i# m& v5 R# i; J
    4.1.2 解决方案 153
    . j& f9 F2 W  x( d4.1.3 工作原理 153: x; f( g" d4 L& f
    4.2 将Spring Bean注入脚本中 157
    / P$ _7 R. o; Z6 o* t7 C4.2.1 问题 157
    4 q5 c9 v3 d- J$ D4 x5 ^4.2.2 解决方案 157
    + l& S  L) \/ t. P4.2.3 工作原理 157
    ) f. ?) f3 C: ]3 O4 p4.3 从脚本中刷新Bean 160
    3 l7 B! O4 `4 S4.3.1 问题 1607 G/ j  F) T" k+ j
    4.3.2 解决方案 160! o9 L" G% O, p/ S
    4.3.3 工作原理 160
    ; K( `# f! E) K: m, }, M4.4 定义内联脚本源码 161( m& d8 K; C' @, F2 D! H0 i9 g
    4.4.1 问题 161
    ! p1 v9 k7 T4 y6 H4.4.2 解决方案 161
    2 t5 J" U) b" B4.4.3 工作原理 161& q  F8 e! g) }+ g
    4.5 小结 163
    4 Y5 F" }" u% h* V1 `- N; k3 l/ i5 G, E4 N2 |# ~/ l8 d
    第5章 Spring Security 164/ \. M. w8 O# X; u6 T
    5.1 加强URL访问安全 165+ S- ?. w( n. h
    5.1.1 问题 165
    3 L! l: V5 K& k. ^% P( r5.1.2 解决方案 165
    " i7 [2 p* v! J2 n. `5.1.3 工作原理 166
    ! a. f' a& i9 Q) k9 D  B5.2 登录到Web应用 175! W0 I! x1 `" j3 ~7 p" S# b* t9 ~
    5.2.1 问题 175
    $ K. K6 ]5 }3 [8 ]7 h3 ?) T/ G5.2.2 解决方案 175
    " ^9 s! C( w1 V6 v* C6 f' R6 }9 [5.2.3 工作原理 1754 x% f) M5 l0 Z0 ?, q' s
    5.3 验证用户 179
    0 z: ]1 h0 X- S$ D) j5.3.1 问题 179. R0 o9 J4 j) S) P
    5.3.2 解决方案 180% k' o3 i  A& b& G
    5.3.3 工作原理 180( g7 ?( H, m& N" y1 ?
    5.4 做出访问控制决策 190
    5 |4 b' k! I1 V+ y) v5 [0 b5.4.1 问题 190# N( B, R+ E, @1 N( l/ L6 F% M
    5.4.2 解决方案 190$ i5 m  [! Z' o4 R. E+ y$ m5 s! Z
    5.4.3 工作原理 191# K: s/ [5 l1 H; Z8 X) Q) R
    5.5 加强方法调用的安全 193% _5 W1 W0 `- o9 v6 l
    5.5.1 问题 193
    4 T7 d4 U) _" r8 d5.5.2 解决方案 193
    . ~2 A- b; f4 Z( k$ D5.5.3 工作原理 194! ~- K' b5 e4 X5 @9 G8 i
    5.6 处理视图中的安全性 196
    8 i8 L* z2 ~, r5.6.1 问题 1963 v# k& h; M2 |( H3 \1 o4 w
    5.6.2 解决方案 1964 u, r4 x4 {. |* _- @4 O3 U
    5.6.3 工作原理 196
    : m! D# |# ?. y2 k1 N3 w5.7 处理领域对象安全性 198' L" @( L' v# z
    5.7.1 问题 198/ h* p, j* j" n: D6 a
    5.7.2 解决方案 198" v7 ]/ d9 w1 M  B/ {* Q3 k
    5.7.3 工作原理 199
    6 j+ i* e& i7 b- t, K4 |. w) Q5.8 小结 208
    ; X7 A: e" W0 w, d% i( U
    1 E& C' Y" W2 j% L$ x$ s第6章 将Spring与其他Web框架集成 209
    0 Z0 U& z1 }+ x0 I3 o! o/ h6.1 在一般Web应用中访问Spring 209& I, k% s& x8 J* [5 @  Q
    6.1.1 问题 209
    * q) |6 a; e, h2 h( W9 M6.1.2 解决方案 210
    7 y) g& T+ B# t, Q8 K; `7 z6.1.3 工作原理 210! {! N6 o1 v  I" p" a. [0 W2 ~+ m2 Y
    6.2 在你的Servlet和过滤器中使用Spring 214
    2 F2 G, A8 H( s5 Y7 \4 Z" p, e6.2.1 问题 214
    ; n$ e6 t4 O8 w6.2.2 解决方案 215& w* F* `! g/ X* [
    6.2.3 工作原理 215/ f0 L# S# i- M5 n: k9 F/ P; ^0 C
    6.3 将Spring与Struts 1.x集成 220
    5 j) u0 `. m4 n+ k4 Z8 u6.3.1 问题 220
    ( j) y6 {- Y8 W4 O6.3.2 解决方案 2206 d9 Y) [/ D/ v4 r
    6.3.3 工作原理 220
    " |2 d' L6 f4 d# x8 r# f% c6.4 将Spring与JSF集成 226
    # u' o6 W/ b. \4 y5 G9 [6.4.1 问题 226
    $ N5 H8 }; C, Y3 p$ L+ ~; k' j6.4.2 解决方案 226
    % S* w+ X* e, f/ b0 I0 o6.4.3 工作原理 227  `) s- @+ d& r9 I* U1 A
    6.5 将Spring与DWR集成 232
    ; D. R/ g! n& V' O$ G6.5.1 问题 232
      J% o0 E3 ^6 y  u* L; T6.5.2 解决方案 232
    # q# B; }5 i# }- {% h6.5.3 工作原理 2330 b5 o+ I3 B% a+ w* N4 G
    6.6 小结 236/ r6 t" w: B- y

    5 V" i/ `8 F$ @$ Q5 ^2 @第7章 Spring Web Flow 238+ Y+ J  E8 D+ V  Q
    7.1 用Spring Web Flow管理简单的UI流程 238- Z7 V+ A7 o8 n
    7.1.1 问题 238
    ; `& X. O" T% @" B) _: X7.1.2 解决方案 239
    * w( @1 S! @( D2 w5 U2 k# P% v& v7.1.3 工作原理 239
    4 I  W  C  x) L" U7.2 用不同状态类型建立Web流程模型 246
    1 c& K, C1 b. D2 w) [* N7.2.1 问题 246' }( T' W7 @6 o6 H" V
    7.2.2 解决方案 246
    # b. t) {9 [% u. _$ d* L3 F! t# w7.2.3 工作原理 246
    & i  Y3 r6 H0 Y1 S. A" n0 E7 W3 _7.3 加强Web流程安全 257
    * l  ]* X9 y1 J  v3 b" |7.3.1 问题 257
    ) f) L  j: ~9 Q" Q3 M! F7.3.2 解决方案 258
    ( X+ m5 k( ?- H$ _7.3.3 工作原理 258
    " q' B% I4 P+ A7 d% B# h9 p# Q: @- }7.4 持续存储Web流程中的对象 260
    3 A# y+ Z  v" ^& I9 A7.4.1 问题 260
    7 |' |6 N2 k  W# D1 X7.4.2 解决方案 2605 K& Y: T/ T' c% p/ V0 S% F- x
    7.4.3 工作原理 260
    1 {& o) f7 T7 ]0 ?* M& X2 C- j7.5 将Spring Web Flow与JSF集成 267
    ( {8 b0 ?* w, i$ B2 ^* Q6 S: Z, y7.5.1 问题 2672 \+ Y0 w7 x' ^- s  V6 K
    7.5.2 解决方案 267' M/ G1 n. o3 ]2 Q% q  O
    7.5.3 工作原理 2678 h7 V# a9 q6 @  Y) L, d
    7.6 使用RichFaces与Spring WebFlow协作 2753 q3 {8 u, }2 F! o, {3 R
    7.6.1 问题 275
      q  o  U+ r- i) u; I5 L  q% M7.6.2 解决方案 275
      I% E8 V( H& I; F6 o7.6.3 方法 275" G  i$ M/ a$ Z/ z6 d5 Z
    7.7 小结 279
    2 Y# N" ?( B0 z' X& [& j) {4 X7 u, Q. j5 c
    第8章 Spring @MVC 2806 R! V9 N5 m2 h% f
    8.1 用Spring MVC开发简单的Web应用 2800 Y% {* X8 [* d% ?" T
    8.1.1 问题 280  @3 G9 P; F8 H
    8.1.2 解决方案 2812 ^: d/ R8 a5 {7 N. a1 |9 c
    8.1.3 工作原理 283
    - p& @& Z- A( D8 j( ~' h5 S8.2 用@RequestMapping映射请求 293, s4 Y; ~" g* y% w$ N. H+ Y
    8.2.1 问题 2935 O/ e& N( N0 [7 A* F' S
    8.2.2 解决方案 294
    . I+ K/ ?4 W4 g; ~- }5 t6 @9 \% R8.2.3 工作原理 294: J1 X- Q4 g5 P  K: A6 c
    8.3 用处理程序拦截器拦截请求 297
    7 i/ [& q! v- B9 {( ]8.3.1 问题 2978 v3 w" F8 g, Y* M) q7 t! i
    8.3.2 解决方案 298
    0 U7 l% D% O& G8.3.3 工作原理 298
    # n9 S+ k8 t6 s( t2 r  h" G" @5 i8.4 解析用户区域 302
    5 s' T- [# W3 U8 h3 O$ `8.4.1 问题 302# O, T+ V7 B3 g1 M+ L
    8.4.2 解决方案 302
    - D$ g* P! ?$ z5 a( A$ n" [; m8.4.3 工作原理 302, c! _7 S: b) I1 T
    8.5 外部化区分区域的文本信息 304
    1 }3 o! e5 X; r  }8.5.1 问题 304
    * T. a* w) \# r- P8.5.2 解决方案 304
    0 u/ S0 \( i% H8 k2 o8.5.3 工作原理 3059 j- x" S+ p3 t# W& |
    8.6 按照名称解析视图 306
      M9 J2 j# o8 u9 d) \8.6.1 问题 306) }4 Y- p8 O8 {3 \$ o& u
    8.6.2 解决方案 306
    9 Z# _$ ^- F4 |5 q) }) I8.6.3 工作原理 3061 A6 j( Y6 p+ B  y# y# W  _4 f, Z5 w
    8.7 视图和内容协商 3094 b0 _/ K3 E1 y7 `3 {% h
    8.7.1 问题 309
    4 d; x1 {8 \. t, E2 z% h9 r8.7.2 解决方案 309; L- W% U0 w7 `9 F4 U8 G* t
    8.7.3 工作原理 309
    $ n6 a- Z; s1 s8 ^8 _6 y( `- I8.8 映射异常视图 312
    / p9 e% D7 Q" U' [6 a3 j) D1 X8.8.1 问题 312# e- z; h0 d! N9 b' U7 |8 E/ ~
    8.8.2 解决方案 312
    " j. l; d  N5 x$ W/ V5 t( L4 A8.8.3 工作原理 312) P8 e/ f$ y7 S
    8.9 用@Value在控制器中赋值 3140 a5 x% T/ }' r
    8.9.1 问题 314# K7 {& l4 L' o2 x2 a: B! L
    8.9.2 解决方案 314- G; a' z/ @( j; K
    8.9.3 工作原理 3146 H2 m6 |* g' x$ M3 T/ o
    8.10 用控制器处理表单 3163 {) Y. Q* U8 _$ N( W6 k; ]7 ?
    8.10.1 问题 316# X  \: n  {: M/ i
    8.10.2 解决方案 316
    7 H0 z. @  @5 n2 f8.10.3 工作原理 317
    7 {% M/ v/ }: p! F/ r$ q# [' v8.11 用向导表单控制器处理多页表单 331$ y2 N2 t7 z" k3 z2 t2 y8 q
    8.11.1 问题 331
    1 H8 j) }! M8 m  C5 U8.11.2 解决方案 3310 G$ ^: G# a/ @) G! o
    8.11.3 工作原理 332
    " f5 V5 o) a; O2 t- U4 k; ]8.12 使用注解(JSR-303)的Bean校验 341
    % ^/ K) }3 [+ b8.12.1 问题 3419 |+ V2 l7 d# l- ?. M! g: O( l* y
    8.12.2 解决方案 342
    . r/ ]' l, \' H1 g& O$ E8.12.3 工作原理 342
    8 G# _* M( ^/ U  Q; `1 ?5 Z! ^8.13 创建Excel和PDF视图 344
    # Y2 u) ]) j+ D. I9 H8.13.1 问题 344
    9 \5 e: v4 S- ^7 S8.13.2 解决方案 345
    ) `8 Q$ Y; ?( [/ T8 ~% m; g# C7 u9 V8.13.3 工作原理 345
    - q) B4 V& j9 K' X# Y" R1 U; S2 J/ S8.14 小结 351/ ^" ^5 z( G, f- l, _# d
    % f. n$ T3 D9 N  L
    第9章 Spring REST 352
    0 D, c6 V: {3 U8 @# }3 u" q, W; Q9.1 用Spring发布一个REST服务 3521 {4 l2 }) |. y3 F" q: b
    9.1.1 问题 352
    2 ]% E) c1 D; ]. y- h9.1.2 解决方案 353" S  j( @! z! p1 f' d) q7 Q
    9.1.3 工作原理 353" h* s8 i2 K( @! n. Y
    9.2 用Spring访问REST服务 358
    ) m6 N  |! ]$ h/ B3 k' n$ d9.2.1 问题 358
    & R7 o/ E; i0 q+ L& X2 x* w% m9.2.2 解决方案 358  O# k* I" r2 ^3 ^1 d
    9.2.3 工作原理 358
    2 b4 v! v; J1 m- J9.3 发布RSS和Atom信息源 3627 e0 ]2 A3 W6 D2 {
    9.3.1 问题 362( O: a/ ~% Q# g8 h+ p
    9.3.2 解决方案 3638 d1 k# A) w+ |. ?$ [
    9.3.3 工作原理 363
    ' t3 C6 n3 n, P% u  N! T9.4 用REST服务发布JSON 372/ v, }" T) s# {! _8 C4 j
    9.4.1 问题 3721 H; Z0 P5 F+ J% x# C! ~
    9.4.2 解决方案 372
    4 J( ^8 L% _$ f4 [/ [3 c9.4.3 工作原理 372
    ; T9 u  X& R- c  i, _9.5 访问具有复杂XML响应的REST服务 375: z5 v* f  b" Z  i! Y' T, `$ ^
    9.5.1 问题 375( F) u& N  e: Z" [. {: `
    9.5.2 解决方案 3759 |6 K5 s6 P+ X" D
    9.5.3 工作原理 375
    ( q; n% z3 X/ V* L9 N9.6 小结 385
    & i, ]0 B! @% _7 K! C, a# d, u* Q+ K9 |, n
    第10章 Spring和Flex 386
    ) L' @9 P. a% j, P$ {$ S$ O* V7 A10.1 Flex入门 388' R1 |6 |" r  T  d
    10.1.1 问题 388
    7 z1 _3 z# w' n, Q$ A10.1.2 解决方案 388
    5 X# V/ H' n, A1 \7 F6 h5 Z10.1.3 工作原理 388
    " h, q" M$ w% r10.2 离开沙箱 3935 D, K* ]' ?  \
    10.2.1 问题 393
    " D( d; Z: L+ h" e9 X  e$ g10.2.2 解决方案 394
    & P9 x- A: D& D; J' i! M10.2.3 工作原理 394, m: e7 P7 c" F  c# P0 Y
    10.3 为应用添加Spring BlazeDS支持 406) `9 H4 h- I4 C$ h9 u
    10.3.1 问题 406
    6 D$ d! L/ S. w9 H6 Z10.3.2 解决方案 406. y3 G) [# Q* ^- i
    10.3.3 工作原理 4065 c2 f1 O! [1 a3 r% d- @8 e, e
    10.4 通过BlazeDS/Spring暴露服务 411
    - f4 k# t; S) s* R+ j9 F6 M5 C10.4.1 问题 411; e2 ^  I$ \3 y$ X" W
    10.4.2 解决方案 411. ]- ~8 y5 I. W. O! h
    10.4.3 工作原理 411
    , J1 c) W) S. p# g' S10.5 使用服务器端对象 418
    2 c- Q9 q" d" n+ t# P* \; E2 ~10.5.1 问题 4180 e8 ^- r  l- j4 v+ m+ a
    10.5.2 解决方案 418, w8 y9 @2 I! k0 S) s
    10.5.3 工作原理 418# [. ?- v+ N: p( r; _0 H: P* l* [! V) m
    10.6 使用BlazeDS和Spring消费面向消息的服务 421
    / t) Q0 p5 F. ]  V10.6.1 问题 421
    , p) v4 u# s) z9 a* j10.6.2 解决方案 4227 g7 {& s7 H% j8 U' m9 X
    10.6.3 工作原理 422, t% ]6 x9 s; e  {5 R7 \6 V
    10.7 将依赖注入带给你的ActionScript客户 434: w" O! r2 G- R) k" a- U
    10.7.1 问题 434
    0 |4 a3 v1 P( Y5 k/ j- d# z10.7.2 解决方案 434( z3 F( g4 f1 F! e, |3 u$ S
    10.7.3 工作原理 435
    + F5 Y# j  i5 v3 _0 f& y, ?10.8 小结 4396 m. N* Z% w* b$ {3 D

    4 c8 S+ I) X7 x8 b第11章 Grails 441
    ' z9 M1 |8 l. p2 K: `11.1 获取和安装Grails 441. q, M2 L1 {& ]3 r- f
    11.1.1 问题 441
    6 S3 w7 H6 R# c) Q; Q11.1.2 解决方案 442' p6 G3 B3 v* Q7 w9 z
    11.1.3 工作原理 442
    1 C# K# {9 v( o2 y4 Y0 y11.2 创建Grails应用 443
    * s( w/ j( j  ], Y" F8 K  E2 L4 v11.2.1 问题 4435 t' J! n7 J" h) H* K
    11.2.2 解决方案 443* i% h7 X4 h; `  p$ P
    11.2.3 工作原理 4432 {( k4 c6 R1 T# n
    11.3 Grails插件 4478 A: q: x/ t; b6 L8 O0 |
    11.3.1 问题 4473 Z$ {8 b9 N% \$ V+ Y8 `
    11.3.2 解决方案 448+ V5 w' d; S& T  \9 M2 ]6 d4 l
    11.3.3 工作原理 448' K5 N: r8 r; ?/ J  k. C; G
    11.4 在Grails环境中开发、生产和测试 4492 @: E9 {( Y% ~  J: `2 ^0 z1 Y
    11.4.1 问题 449  j4 q) P5 @% N% d; n- W
    11.4.2 解决方案 4498 e" u2 N8 y  z: e2 o  ~& r. Z
    11.4.3 工作原理 450
    1 K) v) J+ c: r: M11.5 创建应用的领域类 452
    2 p; D: w' U" r0 n1 F11.5.1 问题 452
    : A, x* H1 ~' f. Q4 [8 d11.5.2 解决方案 452
    9 ~5 {, Y4 h6 W) j0 }- r( c, E11.5.3 工作原理 452
    1 K  T# I3 D, }+ N6 D& k* _4 Q11.6 为一个应用的领域类生成CRUD控制器和视图 454
    ! p" t5 L, g& G" U3 g11.6.1 问题 454# e8 h# y. S6 t4 b
    11.6.2 解决方案 454! c2 R* A# i/ n$ e8 b9 i2 Q/ r
    11.6.3 工作原理 455
    1 N( r$ i! U1 X9 Q1 T11.7 国际化(I18n)信息属性 458
    6 K" m/ R1 s$ B; R, A( U4 ^0 ]2 x11.7.1 问题 458
    ; v$ `8 G- Q0 M! M11.7.2 解决方案 458) V9 I# v$ o) b7 n2 f- c
    11.7.3 工作原理 458
    2 W# n/ d* i( f5 x9 H2 ^11.8 改变永久性存储系统 4612 r" e+ o, Z( E# \: Y0 W  t' d0 U1 J. q$ d
    11.8.1 问题 461
    ; L/ C3 C1 k! o  a2 i, {1 Z8 D11.8.2 解决方案 461) ?  E' x: |. ?2 t( p, x; r2 a
    11.4.3 工作原理 461* [; f0 a5 p+ Q( c9 w$ u* E; X
    11.9 日志 464( m+ v" }# D* h& i7 `" n
    11.9.1 问题 464
    % p+ V, ]. D7 j. g- C" ^2 P1 v11.9.2 解决方案 464
    ; U' O) h# [1 a* P/ Y0 Z5 k5 `3 Z/ r11.9.3 工作原理 464, L/ j6 s9 ^. P/ K# `8 k
    11.10 运行单元和集成测试 466
    * c& T7 [7 N. Y11.10.1 问题 466
    , L& w$ U/ [3 D. V! X11.10.2 解决方案 4674 a8 |! P! R  f- j7 u# S
    11.10.3 工作原理 467, L$ B3 q9 m* v) d2 w9 I  W0 y
    11.11 使用自定义布局和模板 472" e) W. \: ~2 ~  ]0 Z! d4 ?) X9 f2 I
    11.11.1 问题 472
    " m3 G" B' ?3 Y  j11.11.2 解决方案 472+ Z5 N# p5 R! c/ M  g# e1 }8 I
    11.11.3 工作原理 472& I0 G6 k' L+ H5 b0 p
    11.12 使用GORM查询 475
    * f- f! x  l4 p5 G( s11.12.1 问题 4751 @5 S8 N) e$ F
    11.12.2 解决方案 475
    ! ?, X$ [- J! g) o$ o; V( B11.12.3 工作原理 475
    ! j2 V# S9 j! R# C2 Y, z11.13 创建自定义标记 477
    ' @% F% _1 V8 w8 O11.13.1 问题 477+ Q3 u9 i4 k: y
    11.13.2 解决方案 477
    ) w$ |, j0 c- ~& I. M4 K( [. a11.13.3 工作原理 478
    ' _, B& g$ R- ]2 V2 h11.14 小结 479
    " R( J  ]5 A/ B4 y* i
    / N4 g" l4 Z, X第12章 Spring Roo 4816 ]) D1 M! N8 O7 A
    12.1 设置Spring Roo开发环境 483. s/ N+ A, O' a6 ?! n
    12.1.1 问题 483
    ) r- ^% l% V" C$ S12.1.2 解决方案 483
    ! Q( k  s$ h/ \) l12.1.3 工作原理 483  b( Q3 }( C& k  {  ^% H6 j
    12.2 创建第一个Spring Roo项目 486
    ; _/ m% o2 V& f7 |; p12.2.1 问题 486
    $ b* s+ X5 r  x  n2 z) ~. ^+ L12.2.2 解决方案 486% S, i, O  y' O' z! Y
    12.2.3 工作原理 486
    1 w3 x, D  Y$ h  L5 Q3 e! M12.3 把现有项目导入SpringSource Tool Suite 491
    5 ?5 H! X+ n, [! D- _12.3.1 问题 491
    , o; U/ e! \8 ]* K+ h12.3.2 解决方案 4927 A) x" r, m4 X  @& X
    12.3.3 工作原理 492$ u0 M# [. k0 X) w5 n2 ~
    12.4 更快地构建更好的应用程序 493
    : \1 E2 |0 H, ^/ i/ s- L12.4.1 问题 493# s( B9 P$ I$ u, D
    12.4.2 解决方案 4946 h3 s' N: n6 o8 s, h
    12.4.3 工作原理 4940 Z( E6 p/ _) |3 K  I- h5 i
    12.5 从项目中删除Spring Roo 500
    ; t+ X) `; e5 C1 \* K12.5.1 问题 500
    4 p& v& Q) @7 r/ B0 d12.5.2 解决方案 500
    3 B& g4 u. _+ E12.5.3 工作原理 501
    9 }) k2 h2 n8 N2 J12.6 小结 502
    4 C/ g, O4 w( G' m
      ~$ ?- r8 g  Y% L1 G' ?- P第13章 Spring测试 5034 A9 B6 }, d8 f# }
    13.1 用JUnit and TestNG创建测试 504! _& }# N+ X+ ^1 c2 k; t% Z
    13.1.1 问题 504
    : A/ a4 [- T( T% _/ d2 o* |13.1.2 解决方案 504
    8 t# U9 a4 I8 y0 W. f13.1.3 工作原理 504, X/ B3 Q! W5 f# s- J1 M
    13.2 创建单元测试和集成测试 509
    , N+ N* S$ x9 w1 [( T, r7 R13.2.1 问题 509
    * |; p* u1 ^5 n2 @* @9 z13.2.2 解决方案 509" v3 k( c8 @7 B$ J  a7 o
    13.2.3 工作原理 510
    9 N6 {  j, m$ q1 ?, E13.3 Spring MVC控制器的单元测试 518
    9 {7 Y. M! D5 j13.3.1 问题 518
    ' f  W9 J9 m( W+ p4 l0 |13.3.2 解决方案 518
    5 i! d- I+ X8 I9 X2 v- `+ C- N13.3.3 工作原理 518
    ) s9 T2 y" [6 Y+ Q- P; T( J13.4 管理集成测试中的应用上下文 5200 r8 N7 M7 H# C2 k
    13.4.1 问题 5204 L! o; `8 z% f6 w+ G
    13.4.2 解决方案 520# j' G8 s  u& v/ }$ Q
    13.4.3 工作原理 521. E- L) Z$ z1 r/ m' B* H
    13.5 向集成测试注入测试夹具 526
    % F* M  K1 ]" p% V0 z& Z/ O13.5.1 问题 5261 q: ?' ?: ^$ }# S/ J
    13.5.2 解决方案 526
    * O# Q) o) M8 j* c3 p- K9 \0 y4 o13.5.3 工作原理 527
    # U, W4 v- \. o& e" A5 H- X13.6 管理集成测试中的事务 5305 j$ F& v" S/ W- D4 U+ F
    13.6.1 问题 530
    0 T' n  l* Y) |13.6.2 解决方案 530
    . P9 I) f6 J6 s  C13.6.3 工作原理 531
    # F  l2 I0 p- P* N5 O) y13.7 在集成测试中访问数据库 536; p; N* u9 n) Q! f1 K8 H/ Z
    13.7.1 问题 536  W" B5 t: x2 E% T3 s# ]
    13.7.2 解决方案 536
    * ~; {2 S5 V: Y9 Q13.7.3 工作原理 537. c& R8 K. V, V6 J0 g) l/ a" x- [) D
    13.8 使用Spring的常用测试注解 540% A, X& W% N- G1 N- e) w* S
    13.8.1 问题 540) ]- h9 p, V& b( i# e8 P4 L8 w6 X
    13.8.2 解决方案 540
    : D3 N$ y/ `- K* _13.8.3 工作原理 541
    # [/ H& V, }. @13.9 小结 542$ [$ j" Z1 r2 J: P) ^
    : \+ V/ \% C% w+ X% z9 x
    第14章 Spring Portlet MVC框架 544: r2 F0 D! {" z2 I
    14.1 用Spring Portlet MVC开发一个简单的Portlet 544
    - c+ _! \. Z1 F9 C6 t14.1.1 问题 544
    , s4 W8 Z% `. J! X. p3 m14.1.2 解决方案 5458 {9 r" B) j# c7 h6 n+ A( M
    14.1.3 工作原理 546
      x& x1 p6 K3 n  f+ g, H# X14.2 将Portlet请求映射到处理程序 553; w# \' G5 o$ }, l4 `
    14.2.1 问题 553
    % x% ^' `3 k8 @! L. ]: L14.2.2 解决方案 553
    & w2 T. _7 k+ T1 V' E6 m( {14.2.3 工作原理 5543 W# o; n/ [; I' c8 {  R+ y/ k
    14.3 用简单的表单控制器处理portlet表单 561
    " W2 b" Y# ~% l3 R3 f; v5 a+ z. c14.3.1 问题 561
    + k" x' o+ V: n. ]& U1 G  n14.3.2 解决方案 5612 I0 e# a4 ]) s% u& ^* y
    14.3.3 工作原理 561
    6 _& i, {; q4 ~$ x2 ^14.4 小结 569
    + Y( K! U: e& X3 m& M% s9 {' ?/ r$ w0 N8 T
    第15章 数据访问 5702 F  d$ ]7 q1 Y
    15.1 Direct JDBC的问题 571
    : t) v6 c3 U8 m  z% Q15.1.1 建立应用数据库 571
    ; Q- c1 E3 q2 k* w5 e2 o: ]. h15.1.2 理解数据访问对象设计模式 573
    . C# ]+ `8 T( A# J5 @15.1.3 用JDBC实现DAO 573
    0 v3 y6 @4 a& |% I/ C! x3 i' S15.1.4 在Spring中配置数据源 575  A, W5 y$ M$ z1 V" K  I& c
    15.1.5 运行DAO 577" K2 g# b7 n$ p! |+ X+ E% O( V+ T
    15.1.6 更进一步 577
    ; L$ i# S8 C. Q5 W/ V8 B/ k' J15.2 使用JDBC模板更新数据库 578
    . j. C9 P. K( j15.2.1 问题 5782 j. w  v# F7 z& t2 p2 I6 a
    15.2.2 解决方案 578
    * z/ l5 H% q8 n4 s15.2.3 工作原理 578
    ! C% x- k! i: h/ j. j/ H# m1 }15.3 使用JDBC模板查询数据库 583
    % o/ G/ h5 F1 L- y4 [2 l) p; p15.3.1 问题 583
    ; Z( k& c1 f7 T) `6 V15.3.2 解决方案 583
    2 u1 d& _' n# Z  Q$ Q0 S/ g15.3.3 工作原理 583! ?9 b6 ?% h6 t( R' g6 t. J6 F9 B
    15.4 简化JDBC模板创建 588- m5 N0 h. n( l, w* n1 M
    15.4.1 问题 5886 n9 i8 @& b6 b0 W: y1 ~
    15.4.2 解决方案 588+ r8 w6 s/ u2 {! b5 O3 G
    15.4.3 工作原理 589  p5 l, h  |3 g; T
    15.5 在Java 1.5中使用简单的JDBC模板 591+ N5 J) @% f1 Z& Y
    15.5.1 问题 591
    7 X) w) O, h* M* X: _* a15.5.2 解决方案 591' X/ R. N0 j0 `* G3 M
    15.5.3 工作原理 591( M2 N) {2 ?* t/ k1 O
    15.6 在JDBC模板中使用命名参数 595% S3 ?, G- m  e( i; e
    15.6.1 问题 595
    ) D9 V8 C( i" R  `! f6 ~3 n% |15.6.2 解决方案 595+ |# [$ I  v" Y* P6 N
    15.6.3 工作原理 595! I% x) E; ^3 l' [9 ~' p# a
    15.7 在Spring JDBC框架中处理异常 5978 P+ d' F# B# B- m; @9 J# k
    15.7.1 问题 597
    0 A0 l& O  f, k7 o+ ?8 o9 Y15.7.2 解决方案 597" a4 [) M% s6 ?, x
    15.7.3 工作原理 598
    " i9 P% n/ ~) G15.8 直接使用ORM框架的问题 602
    8 Z" ?( h2 \& g. i* R15.8.1 问题 602
    ( T* w) P1 r! v& L9 D9 a/ |+ q15.8.2 解决方案 603# ?% t( o. \3 g# |0 H
    15.8.3 工作原理 603- V) {/ N) o6 B- r, l- b
    15.8.4 使用Hibernate API,用Hibernate XML映射持续化对象 604# s( H( T0 V6 L$ l* l# |2 K. a5 l
    15.8.5 使用Hibernate API,以JPA注解持续化对象 608$ d9 F2 G7 o0 |+ a) y
    15.8.6 使用JPA,以Hibernate为引擎持续化对象 610) }5 Y: f4 |% w$ F, a) W
    15.9 在Spring中配置ORM资源工厂 613
    " l% \9 p) |4 s8 Y15.9.1 问题 6131 S+ d' _. G$ C( Z
    15.9.2 解决方案 614
    ! A7 {" Q: h; C# Z15.9.3 工作原理 614
    + s# q! F- e5 M& r' U15.10 用Spring ORM模板持续化对象 620
    ( J7 C1 u8 F0 ?  R# o; H15.10.1 问题 620
      ~' W, F; o7 |5 U15.10.2 解决方案 620* p. \  R) }" i6 Z* d
    15.10.3 工作原理 621
    , k+ b- ~& ^- w# r* }$ S. f$ s4 }15.11 用Hibernate的上下文会话持续化对象 626' K$ N/ X& h6 I
    15.11.1 问题 626; Y- l1 ]! {2 H1 I6 j* _; ^
    15.11.2 解决方案 6268 }: w6 B% M, l, p  `3 r4 N0 k2 s* ]& o
    15.11.3 工作原理 626
    % r7 m' n4 [: o. T, w; p15.12 用JPA的上下文注入持续化对象 629
    1 i, K# h2 x7 x+ M- G" u* t15.12.1 问题 629; i" \/ ~; }. Q0 L# C  f" i
    15.12.2 解决方案 629
    ! e* ]" p( D( H; ]3 x6 z* s/ k6 C15.12.3 工作原理 630- q& n/ M6 a" E  I) N
    15.13 小结 632  t; P  E5 v' q8 I
    5 O5 {! v: ]- ^% D1 F. _6 V
    第16章 Spring中的事务管理 634
    : }5 k; Y/ [9 Z! g0 Z" Q16.1 事务管理的问题 6353 s" ~3 v6 \: v0 Z" o# D! z+ f: O
    16.2 选择一个事务管理器实现 641
    8 h' [" l% q7 d  l* X9 b/ @7 _8 M16.2.1 问题 641
    / u; d8 K  [% W  j: x( N$ S  T16.2.2 解决方案 641
    4 k6 B$ }3 e% v$ E: ~9 O5 o16.2.3 工作原理 641
    . n* v4 w' B, v& Q& N& i5 F6 R16.3 用事务管理器API编程管理事务 642
    # [. W5 z% x2 v  [16.3.1 问题 642; F8 a( Y& I) q! s/ a
    16.3.2 解决方案 643
    0 V  n' x8 l+ s3 X  O7 g& e16.3.3 工作原理 643
    6 |! H$ `7 o4 _6 X! l16.4 用事务模板编程管理事务 644. }! ?5 V: t. x) _$ O/ P. ~, [
    16.4.1 问题 6441 m2 h' a2 _7 [
    16.4.2 解决方案 645
    : g2 l+ G+ h4 k7 [16.4.3 工作原理 6456 h& l2 D+ l8 z% X
    16.5 用事务通知声明式地管理事务 647
    5 C0 E, S; J2 }0 Z& X5 J: l16.5.1 问题 647" T& a* n8 T. s) ~2 O/ R! Y
    16.5.2 解决方案 6486 j$ x) O9 J6 F  ]: Q
    16.5.3 工作原理 648
    2 n& h# A1 Z2 N6 o$ m- i6 F9 w16.6 用@Transactional注解声明式地管理事务 650# r9 E% t/ z; a0 ]4 d+ d- W
    16.6.1 方法 6507 K7 [5 e# p% P/ W" l% F
    16.6.2 解决方案 650
      y/ I6 M6 w/ a$ j) i/ Y, D5 ]7 `16.6.3 工作原理 650+ ?5 N( P# Y' c$ [% K9 u4 x
    16.7 设置事务传播属性 652" J0 O$ V/ Z5 b" y+ ]( s
    16.7.1 问题 6524 Z# N! Y- U! b8 H0 Z# `
    16.7.2 解决方案 652" M0 g  y" Z$ m) r: d/ ?( w) j
    16.7.3 工作原理 6534 I2 X7 ~& r" n! d! K1 b
    16.8 设置隔离事务属性 657; e! e( |' h" @! c3 a( i3 @4 P  s
    16.8.1 问题 657! F6 a: T0 u8 |: z: {7 d, `2 W1 q4 o
    16.8.2 解决方案 657
    0 ]& b! v# e( J/ x6 Z# \16.8.3 工作原理 658
    % N  e. `- X* ]- T/ u' h* C# y16.9 设置Rollback事务属性 664
    . c; J0 u: c' a! g4 ?, L2 N3 R16.9.1 问题 664. }/ R3 B& k4 v. }5 `5 E( v
    16.9.2 解决方案 664
    2 l* u! n  m( A4 B: V0 {% ~16.9.3 工作原理 664
    4 q8 o8 S7 _0 ~. y/ i& J16.10 设置超时和只读事务属性 666
    ; H5 e1 @1 I$ c( K4 S% C3 ~16.10.1 问题 666* P5 Y7 q* D& |; p0 p
    16.10.2 解决方案 666
    - O% T& d& D' l16.10.3 工作原理 666
    . B7 d$ N: N1 o6 Y; w( _16.11 用加载时织入管理事务 667
    ( P* H1 ?5 z) x/ B2 G4 U16.11.1 问题 667
    ( X( N  E5 B1 J6 h16.11.2 解决方案 667
    " R% T# x5 I4 q16.11.3 工作原理 667! p: e2 g3 o0 _  e: {( b0 F
    16.12 小结 671# @) {9 ^5 v6 n- E

    ' [& A) u) s2 m+ z; S第17章 EJB、Spring Remoting和Web服务 672
    , j+ ?& M5 I3 w' C4 S/ w, \17.1 通过RMI暴露和调用服务 672
      F. h; B, g8 Z. j17.1.1 问题 672
    / x" w' X4 {+ x! i17.1.2 解决方案 673
    % X& L7 Q: C. }* }17.1.3 工作原理 673
    4 s- }; s  X% k; j  D$ e* K17.2 用Spring创建EJB 2.x组件 6763 L0 y( L0 M3 y0 p% W
    17.2.1 问题 676
    ( Z" `9 V9 ^" A. u! f/ D17.2.2 解决方案 677) |; @( U. g/ [, ^* T9 J
    17.2.3 工作原理 677
    1 j9 q9 L: n% A$ O' h6 B1 x17.3 在Spring中访问遗留的EJB 2.x组件 683
    5 b. K( f& U! b1 ~" n17.3.1 问题 683; x, m- {- k% ~$ t$ {( B
    17.3.2 解决方案 6837 q: N! V0 m$ R4 D
    17.3.3 工作原理 684
      z: J! J1 }$ k( F% L# f# g& ]17.4 在Spring中创建EJB 3.0组件 687$ J3 T5 _- d1 s; n4 h% n  B
    17.4.1 问题 687
    1 I1 e: E5 C% ^- [17.4.2 解决方案 687
    % m: u- _3 D/ S) v  ^17.4.3 工作原理 688
    0 [) ^. j& p3 w, M' B17.5 在Spring中访问EJB 3.0组件 6899 b- f3 i# \, h8 L& F) [
    17.5.1 问题 6896 E- |4 l. p4 T$ _6 {* Y, P
    17.5.2 解决方案 690+ g1 n0 k' f& v7 E6 r
    17.5.3 工作原理 690
    / r" L, y7 Y3 t0 t0 Q17.6 通过HTTP暴露和调用服务 6922 K0 y; ]0 `8 b# ?" G
    17.6.1 问题 692* Q6 ?5 N0 p1 E
    17.6.2 解决方案 692* O" k  F, O) w5 b4 w" V6 L
    17.6.3 工作原理 692
    : U; X5 m  B% _17.7 选择SOAP Web服务开发方法 696! C$ f1 e: C, F( {8 w, U8 `8 \
    17.7.1 问题 696. M" z  n# o, a- e% V
    17.7.2 解决方案 696* z1 S9 h/ B! R
    17.7.3 工作原理 696
    " Z$ \% o! {  w17.8 使用JAX-WS暴露和调用Contract-Last SOAP Web服务 698
    2 F7 d, d3 Z( W( R+ r6 z17.8.1 问题 6988 E6 g1 }4 z  i: P( [/ j" c; _  `2 W
    17.8.2 解决方案 698
    0 m/ r) \8 W6 G. N$ g; _" B17.8.3 工作原理 698
    ! K+ f; X8 K7 q& a, c' g17.9 定义Web服务契约 705
      v3 M0 m1 M$ d6 y  J6 p17.9.1 问题 705
    9 W0 v  k8 h; a5 f- L. ]17.9.2 解决方案 705( e7 }/ u0 `1 W) \( z
    17.9.3 工作原理 705
    : c7 ^' Q$ J! P+ G9 @17.10 使用Spring-WS实现Web服务 709
    ! O/ R' N( }5 \' p) h+ p/ j17.10.1 问题 709
    7 V, u+ v4 m3 \9 i$ g- N17.10.2 解决方案 709
    $ Q7 c2 Q% F2 ]' u9 w" J$ ^9 w17.10.3 工作原理 710
    5 X4 L' f' i' C- |! V$ \* z17.11 使用Spring-WS调用Web服务 715
    / q, E! U) Y. o8 B1 l# s17.11.1 问题 715+ |3 T7 j$ e' m* r- [
    17.11.2 解决方案 715
    # k( V4 ]7 Y$ t17.11.3 工作原理 715
    4 [1 F# B1 J8 {17.12 用XML编组开发Web服务 7190 F, U" l. J4 o5 s+ R
    17.12.1 问题 7199 }9 W7 Y" a) R
    17.12.2 解决方案 7191 Y  m: ~, V$ U: J( w$ ^
    17.12.3 工作原理 720
    7 z+ o* y- O# q% l17.13 用注解创建服务端点 724
    $ Q4 n% w( G# W$ W* c8 k2 }17.13.1 问题 724/ ~! B" ]( m" j  R" |
    17.13.2 解决方案 7258 ^4 h3 R1 Z! P  E
    17.13.3 工作原理 725
    ( N, N" M0 @# p) Q: T5 L17.14 小结 7269 ~/ O' y1 _- o7 Q

    3 h$ _5 g) `% D( W第18章 企业中的Spring 7271 Q: j% ~. n6 b- a1 C1 F
    18.1 将Spring Bean输出为JMX MBean 7274 `8 s- F1 e& P- o2 c8 M
    18.1.1 问题 7275 m: `$ \" q( w+ Y
    18.1.2 解决方案 728+ ]% ]4 H/ o& J  Y6 S
    18.1.3 工作原理 728& R* R/ E4 U# y+ Q. ]
    18.2 发布和监听JMX通知 740
    ) w4 w/ P: a9 A9 h3 C1 [' R18.2.1 问题 7405 y4 Y3 y6 u/ w- P  V
    18.2.2 解决方案 740& a, ~6 C- T4 e
    18.2.3 工作原理 740, m- V- O, h) z5 s
    18.3 在Spring中访问远程JMX MBean 742! e1 U1 W- p) V; S' l/ j( ]
    18.3.1 问题 742) V2 h) r+ r1 n2 j* c
    18.3.2 解决方案 742; @% n$ K/ J9 z; W5 w; t5 Y: W, a
    18.3.3 工作原理 742; P* n3 Z/ ?* f: R8 c8 M# e
    18.4 用Spring电子邮件支持发送邮件 745) X& }5 l; x$ L& G; V4 P
    18.4.1 问题 7459 R5 d+ ?, d% T  b0 z
    18.4.2 解决方案 745
    8 T( s" o" V, X18.4.3 工作原理 746
    & d% m! a( P  r' G  l; s5 v18.5 用Spring的Quartz支持进行调度 753
    - e2 i- y: K; f8 Q0 S18.5.1 问题 753, M7 H9 K4 y/ g- V3 I
    18.5.2 解决方案 753
    * Q, U5 Z$ L8 q# z3 v18.5.3 工作原理 753
      i& g8 p5 |, T" Z2 [18.6 用Spring 3.0的调度命名空间进行调度 758
    7 r% B% s% _; ]! S18.6.1 问题 758$ ~* d7 [- Y4 Z. u0 {
    18.6.2 解决方案 758
    - U  J( A0 o- z% n' K' w18.6.3 工作原理 758; l+ M; m9 }6 ]( ]3 i' G0 o. N0 N$ K2 {
    18.7 小结 762& z6 m8 q8 z8 ?" C* f
    7 B  f9 p8 k+ C' y# L
    第19章 消息 763& ]. |5 Y- u8 t' @' M
    19.1 用Spring发送和接收JMS消息 7643 t' o2 ^4 T" T7 W
    19.1.1 问题 764
    $ x$ w+ ~9 A: e0 |; `9 n7 b19.1.2 解决方案 765
    8 }4 i+ J+ h$ ]$ @6 f1 C19.1.3 工作原理 7651 t# Q, Z) z) F0 S7 s4 Z
    19.2 转换JMS消息 776
    3 }  |+ S" G( P0 i9 {3 e. @; R8 F19.2.1 问题 776+ p% u' O* ^1 ~. v3 F/ k
    19.2.2 解决方案 776
    % I' G7 k9 y, _* K  T% C19.2.3 方法 776
    & V" b5 }; s$ I0 D8 R19.3 管理JMS事务 778
    8 O& D; g( T. J0 ^' L. z, m5 ~19.3.1 问题 778" n" l4 d( G3 p: \. B8 N% v; c
    19.3.2 方法 7795 B) a  r0 B& M% u1 y3 _
    19.3.3 解决方案 779
    4 Q: u+ k& A7 t+ L" f6 Q19.4 在Spring中创建消息驱动POJO 780
    + r8 C$ }( u. M. O7 D# `19.4.1 问题 780
    3 b+ w0 o5 s$ s19.4.2 解决方案 7807 c* r: O% x5 k! `7 W; L
    19.4.3 工作原理 7817 U* b  z* J& k% O2 R
    19.5 建立连接 786+ C4 g& ~& G  S3 {0 H# g
    19.5.1 问题 786; a9 o: t* }3 ~8 C$ A( r. p, t
    19.5.2 解决方案 787$ }! [* i( F- c+ z4 Q$ u
    19.5.3 工作原理 787' }5 W, C3 N0 v
    19.6 小结 788
    2 `- T: B* l  g. p: V
    0 A* J: K" {/ I第20章 Spring Integration 789
    ' R( x2 C0 V; j! W3 s20.1 用EAI集成一个系统到另一个系统 790
    2 `+ {; q4 q8 b( `& L20.1.1 问题 790( ~8 a( n9 E$ b5 E
    20.1.2 解决方案 790, n6 j. Q' V! w& B6 w
    20.1.3 工作原理 790: f! u! h8 y+ i5 w9 W* k
    20.2 使用JMS集成两个系统 7934 [# f2 z7 G( `/ @4 N1 c$ n
    20.2.1 问题 793
      f3 n" }( t- e  t2 Y( E20.2.2 解决方案 7939 l- ~: k3 m* ?& a0 x
    20.2.3 工作原理 793- m; Q! [' U* `4 B, j5 M
    20.3 查询Spring Integration消息得到上下文信息 7975 q" Q. Y6 H' D' R- j& ~
    20.3.1 问题 797/ O# \; P$ Z2 \* _* x0 F
    20.3.2 解决方案 797
    * }: o, G* S( u20.3.3 工作原理 797. k' j' e, [0 `0 _- ?4 k
    20.4 用一个文件系统集成两个系统 800
    / }0 X' p3 q6 V5 s/ p: B/ N20.4.1 问题 800
    . R# W  G& T' o5 z+ H8 ~" h20.4.2 解决方案 800; {0 H5 N3 a. y/ {5 O
    20.4.3 工作原理 8005 L9 A8 ]; I& e2 d# |
    20.5 将消息从一种类型转换为另一种类型 802$ Y' g  g9 ^& v
    20.5.1 问题 802- l" g  O& e: [# W& r9 q: |
    20.5.2 解决方案 802' m: z( o  B' M4 F. u0 o6 g  {
    20.5.3 工作原理 803
    $ U* a) d5 M$ S3 B20.6 使用Spring Integration进行错误处理 806
    ) y. Z( }1 O" I* H# I4 E20.6.1 问题 806
    ' r* L' g, k( `/ c20.6.2 解决方案 806) N+ @; T4 X; T* _3 t
    20.6.3 工作原理 806
    , c! f2 m- Z# r" ^20.7 集成控制分支:分解器和聚合器 809
    ) |' s2 Q% ?- R1 @# Y+ j) g20.7.1 问题 809
    ) r8 B+ W9 h8 {+ T20.7.2 解决方案 809: r# W( t% O) c2 o
    20.7.3 工作原理 809
    6 D2 k; Q3 t5 @; ~; \) E! A: _20.8 用路由器实现条件路由 813) b& K# d3 ~% H1 I4 t% g
    20.8.1 问题 813
    3 V, z( I: v: G0 A2 y" {20.8.2 解决方案 813
    2 V  f3 L. ?+ l" N9 A$ {4 B20.8.3 工作原理 813* n% _, p" t/ {. U2 I4 n
    20.9 使外部系统适应总线 814
    % d! J0 g2 W) T: u$ D9 ~/ C+ O20.9.1 问题 8145 l4 U2 e7 U5 S7 j
    20.9.2 解决方案 814
    & g; f/ J+ n) ]) Z: p20.9.3 工作原理 814; @8 d) x8 A' _' L5 S, A
    20.10 用Spring Batch产生事件 825
    ' Z/ z) _' m& C$ z1 [) L- K) s20.10.1 问题 8251 O0 x, w0 G/ y7 ?9 M7 m2 K
    20.10.2 解决方案 825
    , S- s! V  V6 `  ?# \9 O20.10.3 工作原理 825
    0 Y) i: W( i. [20.11 使用网关 826; G* k1 c. p/ y% S7 E1 j" G% }
    20.11.1 问题 826# K# x2 g% f( q  @0 ~: ^
    20.11.2 解决方案 826
    , ]* t! A9 T' y  H: u20.11.3 工作原理 8279 Y5 Q8 N5 {6 h+ D) N* ]# Q
    20.12 小结 832
    6 S1 ~; Y" T- d0 A/ n* O
    7 B1 l3 j9 B$ ^0 B第21章 Spring Batch 834
    ) [6 t/ w/ a9 M& c21.1 建立Spring Batch的基础架构 8365 ^6 d% @5 v0 Y# f
    21.1.1 问题 836
    8 F& a5 k4 N4 S- B# H21.1.2 解决方案 836
    4 G/ {# q1 n& z- G' c21.1.3 工作原理 837& {& f6 m2 s" d# a2 k1 R
    21.2 读取和写入(无计算) 8395 {' N* U6 h0 @9 q
    21.2.1 问题 839
    $ `& V9 w5 E8 u; T3 b21.2.2 解决方案 8392 I5 w0 \, E$ ~7 w4 }3 s
    21.2.3 工作原理 840
    ( N7 G4 |$ u/ _7 v) ~2 @& U21.3 编写自定义ItemWriter和ItemReader 844
    # \, e) R( d& i" j) B2 Q21.3.1 问题 844
      j$ X- r  O: n* d" O21.3.2 解决方案 844
    , L, A8 i( M1 S3 M( p21.3.3 工作原理 844
    ; {) C. i  }3 Z3 u% }7 ]5 p! L  v1 o21.4 在写入前处理输入 847
    " J; C. q4 P; \) x. |0 g* Q0 G, ?21.4.1 问题 847; V! m. A' `) A4 R
    21.4.2 解决方案 847
    3 n: W' o4 o- G' R2 ?21.4.3 工作原理 847
    1 V( U" U. n; _$ G" x21.5 通过事务改善生活 850
    9 |5 S, x7 h+ r6 [3 v21.5.1 问题 850
    # P8 d9 f$ H) B$ a7 t0 }21.5.2 解决方案 850
    * P& Y! J0 r, R21.5.3 工作原理 850/ l7 }* g- x8 R2 N' i
    21.6 重试 852
    $ Z+ c2 r! e% @  Q8 s# l/ I21.6.1 问题 8527 T  m: N4 n, E3 I6 f
    21.6.2 解决方案 852/ ~5 b3 _. r+ F8 v
    21.6.3 工作原理 852
    4 H. d+ z" i6 |21.7 控制步骤异常 855- p( {) }! ]# g+ k9 O/ X6 C
    21.7.1 问题 855/ x8 N, F, C  s& d$ \& d: w
    21.7.2 解决方案 856
    : u; A0 U8 |: e% p: f% m21.7.3 工作原理 856
    - q: F1 m- @  W) f( y& g9 N% l21.8 启动一个作业 860
    : N8 V: J0 G# }3 S. k# w21.8.1 问题 860% \$ v( T" D4 t* I/ U
    21.8.2 解决方案 860: ~! B- _: Y9 Z: s
    21.8.3 工作原理 860* s/ U0 r2 }' V: {8 B: t
    21.9 参数化一个作业 864* t  i$ y$ x% a1 f, ?2 K: U
    21.9.1 问题 864- q" ?# \& |' `, \- v" m
    21.9.2 解决方案 864
    1 O( Y* W0 [3 F( p. M/ q/ v21.9.3 工作原理 864
    " p/ a7 ]6 P5 A3 ]+ U21.10 小结 866
    8 C+ E) n$ T: ^! H/ q% d: p
      l* P; k* C0 z; r) l' M7 @8 g: Q4 x第22章 网格上的Spring 867( {( Y+ r, _+ v6 R4 E
    22.1 使用Terracotta聚合对象状态 869
    $ E7 L; N. {, C: e5 }22.1.1 问题 869, X3 M' z% M& x. ]# h: ?
    22.1.2 解决方案 869
    2 H' C3 `- r3 }$ F( k1 ?. a$ R22.1.3 工作原理 8691 n. k" ?2 b  T$ R
    22.2 将执行分布到网格上 8790 U8 @+ V$ o/ o, E5 H3 ?
    22.2.1 问题 8796 V; S2 P6 n, ^! c# c2 f
    22.2.2 解决方案 879
    * \; t* j6 k: f" M22.2.3 方法 8794 O% G* N; {( l+ q! U3 @0 ~) P
    22.3 方法的负载平衡 880
    ) E5 w6 O/ c2 `  X# m+ Q22.3.1 问题 880
    9 I. j8 ~' B# L$ b22.3.2 解决方案 881
    7 m4 R% e" \0 ~' j22.3.3 方法 881
    : U1 B: T% D! ]9 U3 u( O22.4 并行处理 884
    5 L9 q1 n$ V. M& X5 r7 m5 `& `22.4.1 问题 884
    ; q3 d5 t9 e( i* y7 G; F! X( O+ C22.4.2 解决方案 8852 G, a8 V. V; L& j
    22.4.3 方法 885
    4 q6 [$ K& c, o2 }% K% r( n22.5 在GridGain上部署 8875 L1 m2 ^" ^( j/ D3 p3 x# o% p
    22.5.1 问题 887
    1 T. X4 o& [! F, T: A4 C22.5.2 解决方案 887
    4 X3 ^1 V: m! c( ?+ F" B. L22.5.3 工作原理 8871 _. {9 G: u/ d3 ?6 @' e  S
    22.6 小结 891
    + T9 G0 Q: u  A; @7 Z. G9 t+ Z" M" ^0 `
    第23章 jBPM和Spring 893
    9 }& O# C: t. l6 y1 r软件过程 894
    8 M0 a3 d( x# e0 D& ]0 B: m23.1 理解工作流模型 896
    & w  @- k+ X( L: n- [23.1.1 问题 896) x5 I. i1 U  X
    23.1.2 解决方案 897$ |- _. W  ~7 z2 M
    23.1.3 工作原理 897
    ' g$ x7 c+ ?' `, ?3 R- ?2 Q6 P; b23.2 安装jBPM 898
    0 C1 J, x9 X2 c9 I9 _) A; I23.2.1 问题 898
    2 m# a3 f- i8 W! f9 q1 t$ x23.2.2 解决方案 8987 u; P* Y& I/ K) Q& `4 E' |
    23.2.3 工作原理 898
    . N2 n+ d3 O) `1 ~3 `23.3 将jBPM4与Spring整合 900
    ) I! c& Z8 o+ `0 X4 a  C* z7 K! T  u5 w23.3.1 问题 900
    # W) M! b- o4 J9 V/ B" u23.3.2 解决方案 9000 q  A# P# l) \
    23.3.3 工作原理 900( {/ Z. a( I: A0 f* P! Y
    23.4 用Spring构建一个服务 906
    - x6 m/ c6 e* i4 p- `, _23.4.1 问题 906
    4 W9 ]7 O* @3 [" V, G& J23.4.2 解决方案 906
      ~0 S$ r# q/ Q1 [23.4.3 工作原理 907$ m4 S- ]3 M% Z! u1 S- `
    23.5 构建业务过程 9105 [" s! q1 {3 j% T4 ]
    23.5.1 问题 910  T. e/ I# w( R" u# v/ G3 s
    23.5.2 解决方案 910
    0 d& z0 V* M+ ^& X) b! [( ?23.5.3 工作原理 910
    3 {9 s3 K- A+ V* M23.6 小结 913
    - r7 |3 U$ a6 n, [  N  ~4 W! Q- `2 v- V9 r' {+ H0 Z. Z+ H
    第24章 OSGi和Spring 914
    & l) |$ w4 ?$ r& a4 Y6 u24.1 OSGi入门 915
    # y1 r/ E- m$ z7 W* U24.1.1 问题 915' j; s2 n9 Q: r$ b; D. Q
    24.1.2 解决方案 915
    , k+ ?% i) n! Y3 L24.1.3 工作原理 916
    4 U& R; p' _3 _' Y3 |24.2 开始使用Spring Dynamic Modules 922
    4 q: U5 G1 e( T24.2.1 问题 922
    " K" m) ]. \8 X% r+ m9 e1 B) W1 w24.2.2 解决方案 9222 p/ O$ @8 E, m! e
    24.2.3 工作原理 922( b( s$ o* d+ m0 p) J
    24.3 用Spring Dynamic Modules输出服务 9260 g6 a1 W: L3 Z' k  J1 A& T
    24.3.1 问题 926: w3 M7 w1 c1 D
    24.3.2 解决方案 926
    & p6 X7 o  j7 X" \24.3.3 工作原理 926
    : B& Q, x( ^2 J9 e. o24.4 在OSGi注册表中寻找一个具体服务 929
    * p) l( A( W4 `24.4.1 问题 929
    0 v9 \( o3 T: z8 J24.4.2 解决方案 930* U' j/ Q  Y8 P/ D, j4 |- s
    24.4.3 工作原理 930% J7 F# Z3 \$ e
    24.5 发布多个接口的一个服务 932+ q- X) v# [" x, l# u! u3 ]/ M1 |( X
    24.5.1 问题 932. l2 ]# \+ F+ P4 |5 R- u' d
    24.5.2 解决方案 9327 S7 Q6 `& k' D- L( K
    24.5.3 工作原理 932/ ]7 Y% k& S' R4 o: U+ u
    24.6 定制Spring Dynamic Modules 933
    - ^; P9 v8 u, p5 Y# s24.6.1 问题 933. `- v  g3 W% s$ w# h; r
    24.6.2 解决方案 933' F% c1 V9 K5 x% l8 ~! G6 j( d
    24.6.3 工作原理 933$ j7 l. x, }, h$ q+ L
    24.7 使用SpringSource dm Server 935
    0 @: [" f# i; w24.7.1 问题 9351 p! o6 i4 X( V- u( {0 l9 U
    24.7.2 解决方案 935
    " V! t* Z0 W5 p4 Q' `24.7.3 工作原理 9355 l- N$ g# q; E
    24.8 SpringSource的各类工具 937
    - P1 f. z4 A' b" k: m! \' m24.8.1 问题 937
    + Y) ~! Y0 E2 K, |( A% b5 y24.8.2 解决方案 9378 D4 e; K0 J6 L1 h
    24.8.3 工作原理 9376 N  R; X+ T9 v8 i" h% H( B
    24.9 小结 938
    0 L- S$ u6 [7 e. B) J& ~9 T! |- f% W/ |1 `. \; h
    Java资料百度网盘下载地址链接(百度云):java自学网(javazx.com) Spring攻略(第2版)(Spring攻略(第2版))  PDF 高清 电子书 百度云.rar【密码回帖可见】
    ( ~: g: ?( g; j) z- y2 Y* g( s
    游客,如果您要查看本帖隐藏内容请回复
    , ]+ V' J2 o+ g7 Q1 i$ P
    ! c/ J* c# J6 V
    ) r# ]( r& w7 ^  X' O$ F3 v6 }

    9 H* S7 H! s7 T* B/ ]
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3215

    帖子

    6432

    积分

    普通会员

    Rank: 2

    积分
    6432
    发表于 2019-12-24 14:41:51 | 显示全部楼层
    哈哈哈哈哈,开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-5-9 09:15
  • 签到天数: 4 天

    [LV.2]登堂入室

    0

    主题

    3309

    帖子

    6660

    积分

    普通会员

    Rank: 2

    积分
    6660
    发表于 2020-1-7 15:48:22 | 显示全部楼层
    努力学习努力学习努力学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-10-14 00:06
  • 签到天数: 2 天

    [LV.1]初学乍练

    1

    主题

    3365

    帖子

    6763

    积分

    普通会员

    Rank: 2

    积分
    6763
    发表于 2020-1-10 16:16:57 | 显示全部楼层
    学习学习java架构师
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-8-31 17:43
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    3345

    帖子

    6699

    积分

    普通会员

    Rank: 2

    积分
    6699
    发表于 2020-1-15 14:46:13 | 显示全部楼层
    感谢感谢感谢感谢感谢感谢感谢感谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-7-28 14:19
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    3341

    帖子

    6700

    积分

    普通会员

    Rank: 2

    积分
    6700
    QQ
    发表于 2020-1-24 07:12:12 | 显示全部楼层
    大佬  厉害呀
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-8-7 16:31
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    3290

    帖子

    6595

    积分

    普通会员

    Rank: 2

    积分
    6595
    发表于 2020-2-10 12:15:28 | 显示全部楼层
    不错 支持下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3270

    帖子

    6542

    积分

    禁止发言

    积分
    6542
    发表于 2020-2-16 10:56:23 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-4 18:31
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    3322

    帖子

    6665

    积分

    普通会员

    Rank: 2

    积分
    6665
    发表于 2020-2-26 06:14:10 | 显示全部楼层
    java我来看一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3299

    帖子

    6602

    积分

    普通会员

    Rank: 2

    积分
    6602
    发表于 2020-3-10 17:48:38 | 显示全部楼层
    非常好,!!!!!!!!!!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-4-26 20:45 , Processed in 0.808406 second(s), 36 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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