|
如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?+ s5 K; H" ?, i( a. k8 R$ \
- Q4 K: z$ m7 ~' _, I可以看我写得代码,相信你会从中找到感觉的。3 D& M% c6 s) \! \, W
2 b2 b$ M* r: j3 h, H( ~" x" y1、eclipse中建立一个java project工程就好了6 j+ p; V2 F' k M
2、加入spring相关jar包
/ @1 B, S M3 J/ } q! U, o
+ R) |: w5 {) y
% U6 w4 u3 B- P3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml
% t' y( |& v% {: d7 T; c$ `<?xml version="1.0" encoding="UTF-8"?>
/ P- W2 H+ e: c/ B1 u) Q6 P/ W. O& Y<beans xmlns="http://www.springframework.org/schema/beans"
" X- s j0 e! A( q! j* [ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx") I4 B( ~4 e( x$ i$ B) l h# K6 s' m
xmlns:context="http://www.springframework.org/schema/context"
1 D" l' l6 V3 O xmlns:aop="http://www.springframework.org/schema/aop" b* G: [# v: L% }9 \0 d/ @
xsi:schemaLocation="
' b5 H; s! }. C5 V: j/ x& V http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 2 M0 `# @) h8 W0 A
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
1 _2 T' @& I& q( i- X http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
/ H: N$ Y4 S6 i8 x http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
: \; k6 ^( e7 D <context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>
( m4 D7 G6 Z$ R$ A</beans>
2 Y9 w: k* h# ^1 y6 G. x4 J$ c+ j% R( B) E2 j
) n0 Z( ?. w% l. K$ ]4、建立BaseRespository类:8 W8 \- \" E h
package com.javazx.beans.generic.di;3 N1 D+ ?% h! D$ l( V& |& z) E
/**
4 f8 a) V/ U/ Z4 W; a$ i *
. Z, m/ j ]3 ^6 r( i * @author 作者 :javazx.com, i$ d/ N) ?, k5 ^& m
* @version 创建时间:2015年10月30日 下午8:05:03 . H/ T% E' I( ?
* @description 描述:5 z, G6 I* q* u% h
*
6 E5 ?' N( }3 n3 i, u */
1 N6 A, i4 x) C& b$ k) R D. A" }public class BaseRespository<T> {
. ?0 Y g& Y M: i- a) [, ]9 T% K
( J" \- l4 b/ b7 p8 J4 _4 y}
& p6 Q+ e2 [0 t2 D) O3 [
$ g( P9 Q5 d" Z, T6 d8 P! Z7 Q/ p
% ^# h9 ~+ S' K: q5、建立BaseService类:
- e& N' [; p( F" Epackage com.javazx.beans.generic.di;
" n3 ~" R$ z* a$ d, Q& u. r/ i- z% V: V# _0 x U# v
import org.springframework.beans.factory.annotation.Autowired;
# q7 P0 K/ H. O9 g9 }
4 ?0 z& g/ N. _5 F" E/**
7 v! |' y" v, q: l * & b: `# ] X1 g6 h, |
* @author 作者 :javazx.com
8 ]% ^" C' G% { * @version 创建时间:2015年10月30日 下午8:05:28
0 K* a* d; H. e, B * @description 描述:泛型依赖注入7 D U( A9 @: n1 W2 g& d
*
1 N: P3 _% I+ D+ A' Z2 t4 H# h2 k */ |* D2 a+ h" ?: i* X4 f
2 C- O) _. y+ I
public class BaseService<T> {8 X+ Z: x& W4 O4 O5 ~, [* g
@Autowired9 N* U1 X; e( v0 O
private BaseRespository<T> baseRespository;
h, }7 H% e: ?2 G
, }- `) _& t: A& t public void add() {
4 Q1 M+ L- n+ W& ?# N System.out.println("add...");
( _3 g7 y5 F- I0 L+ f$ ` System.out.println(baseRespository);# S0 V7 Y+ a, M6 K1 }+ D' n
}
' ^ b8 u. o/ ^, h! R0 _( ]}" v6 F0 J% m# h& U4 ~
7 X7 L) a0 A' q" [5 B( t
! ~- C) X1 f8 ^5 K) z
6、建立UserRespository类:2 Y( W9 o" C( ?! `; g r* i
package com.javazx.beans.generic.di;
6 o+ x& X6 [2 P3 F2 u \. H0 J5 I* t! |
import org.springframework.stereotype.Repository;
4 `2 p$ |$ g5 @- Z `, Y8 |
. {+ R' J _5 a+ r7 K4 {/** 2 Y/ l3 T1 @% V0 v# i
*
5 }5 _" B7 I9 A4 Z& s% ? * @author 作者 :javazx.com
+ D W) C2 p/ b) E * @version 创建时间:2015年10月30日 下午8:15:37
, ?5 y/ j. k) S4 f2 ^' |/ ]$ x3 w * @description 描述:9 ^0 @; _; O; C- c* G3 F" T
* . K( t1 R. ]; J4 ^* {3 _9 M
*/# v0 ?; |' J+ K P) |/ ?5 g
@Repository
! V- k9 r* k+ f$ c2 }) fpublic class UserRespository extends BaseRespository<User> {
+ A1 M& U- H/ u L- Y* P. m, L3 v) M& \' \+ J
}
- e& u5 I8 O6 x4 y/ R+ \" z9 W I" f
3 f5 B: j$ p) r% X |
7、建立UserService类:/ n: n2 ~% [) B( J+ ?+ d3 J0 M" u
package com.javazx.beans.generic.di;5 E. C$ u. V+ ] q" ?& C
7 G' w+ B1 D; E& @, P
import org.springframework.stereotype.Service;
+ S, W) C0 K) o5 q2 z
) T9 |1 F% y5 f0 r! M/** 9 M% ~. w5 v7 |8 w* d1 r* }0 H3 K
*
( R2 E) U8 b; p, g( I * @author 作者 :javazx.com# X$ H ?( E5 z5 ~
* @version 创建时间:2015年10月30日 下午8:12:04
, i T6 i+ W# G0 W- e" x * @description 描述:
# ^0 J3 i3 o7 s! _4 x5 r * - o$ b' R+ s( v" j. \& B' U+ r. k4 ~
*/
3 }4 i7 w- g8 X5 J+ m@Service# w& {2 Q# T1 D* p' A! v# u
public class UserService extends BaseService<User>{8 }& o% `" {1 Z# l+ F
7 _( w3 q9 v1 [ G: ~}: h9 E9 o. v( e$ S0 `
9 k. ~0 E5 x( j' [& t1 }! n9 B, L
, w- Q0 u4 ?( p- ?3 W. C8、建立User 类:
* k- |9 H5 s0 ^. A& | bpackage com.javazx.beans.generic.di;$ ?& q# }6 v C4 V. _; {; w! j! j
/** " A0 o3 I3 y, ~* w
*$ A; o7 \( |' h. J1 [( r( X! m
* @author 作者 :javazx.com
3 F0 B% g* ^6 h" [' @ * @version 创建时间:2015年10月30日 下午8:12:11
2 C$ ^& h! ^6 {" ?/ y- p7 c5 |% h * @description 描述:7 Z6 l6 c8 E( B9 D8 o) z' ~0 K% c
* " i# K0 m8 f) `) O+ i
*/
) O! f- d; D; u4 `; R0 `$ f& P0 L, epublic class User {
3 q' ~% ?* h3 z; |+ T2 J: A. Q: G' B
} z8 ~: _7 W; ]. K. j6 F
, g! T' x0 q+ [1 m: f
) @* R0 Z R% ^/ K {9、最后建立测试类:
! F/ H& V. A) epackage com.javazx.beans.generic.di;
. |6 }6 p2 P" ^. n
: @3 ~) p j& g' ?. h# Z5 U, U0 uimport org.springframework.context.ApplicationContext;
- x ?: X, ?5 r7 ^* h' Himport org.springframework.context.support.ClassPathXmlApplicationContext;
. v2 w5 B) e& p7 P
+ Y! H- L( I0 C& u' T4 s/*** E& k$ E& N0 X( s0 a
* % ?5 P+ ]) [' R5 ^# z
* @author 作者 :javazx.com6 t4 T$ t( E9 n8 ]$ o
* @version 创建时间:2015年10月30日 下午8:19:15
5 U; k; I; U* C7 u, N- D. R$ y * @description 描述:/ o/ V( A9 b% b5 {+ }' I! V% f! V
*
/ \- @; F+ S5 _% p5 u! T */
! p, I% {( X$ t2 x; d! y, T ?public class Main {) K$ A* `1 r, x& P6 {9 P' Y
! F, p2 G8 A# b. a4 Z+ Z. y3 p
private static ApplicationContext ac;
6 F! f Y+ o% A4 T# w: S* B$ _' E
public static void main(String[] args) {2 L& o$ c/ Q- u: s3 a) w
ac = new ClassPathXmlApplicationContext(
' ^3 J8 @0 N" S: a/ f$ S7 Y% j "beans-generic-di.xml");# ]7 u/ N2 d& Z* {: z
UserService uc = (UserService) ac.getBean("userService");, D& ?- R' Q- [% l6 M2 a$ x
uc.add();3 u U/ ^/ Z. s
}
" a/ ~3 s9 x9 ?; ~. ^
7 \8 L# q/ t7 C! v/ e} r7 {/ r: F3 j
+ l/ Q1 O2 ^( S1 i8 |) M# i8 _* z, W# R: e
10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。
4 Y a; b+ l) ?% C. F+ d
! H7 y4 F# s5 w$ P/ Z9 }7 Q, k" E w# z
1 A+ Q) D0 Z3 ~! G$ b x% O1 v, [: x* O4 f* D; ?
/ t. L" K1 Y5 @& ]% S/ ?" F+ u. {
+ {* W. z$ l5 e |
|