|
如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?7 @% n$ n: Z6 {9 R
! U$ R, M [2 V可以看我写得代码,相信你会从中找到感觉的。( K1 {$ @' A4 M+ ~& a) u1 R1 T
6 T" A4 {* S! G; L1、eclipse中建立一个java project工程就好了
- ?7 U5 R% C; f' [2、加入spring相关jar包
# T4 M) z0 v4 v+ n% `% G
4 s9 m$ l( r% T8 R& O
0 n* D( G6 h9 q5 F3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml
% _/ [/ d- M3 g+ c3 ?<?xml version="1.0" encoding="UTF-8"?>
3 M K" G4 k" F3 T3 i8 S2 ~5 N5 D<beans xmlns="http://www.springframework.org/schema/beans"
$ F- I, F5 q' O4 s% ^$ x) @* \ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" {+ ] W0 }4 V# m/ d
xmlns:context="http://www.springframework.org/schema/context"
2 s+ a/ Q1 e+ N; P xmlns:aop="http://www.springframework.org/schema/aop"2 J, g' c+ f9 G' H4 f) a
xsi:schemaLocation=": X/ _. K$ o" j3 G( W. v i4 V" s
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
5 n& w( d7 g ` http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd ' D- }: P/ z# m* L+ s
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
3 o8 D/ |3 y' G/ Y+ Z7 r8 R http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
9 y* G7 C* g) @3 }% f) P6 m/ e <context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>0 X+ T2 i- G9 l; j
</beans>- V/ B$ A2 o7 ? s: `1 G
1 g! `) Y, \* U* A* b
' ?" t! _! v8 O# A9 H4、建立BaseRespository类:
6 Q) G4 f' ^! z" w+ rpackage com.javazx.beans.generic.di;
4 _6 R5 J) ~& J2 h/**
% l% {# e k. q * V9 J( X' d j9 D/ t
* @author 作者 :javazx.com' t8 o+ p+ N2 `# I
* @version 创建时间:2015年10月30日 下午8:05:03 ) \/ G% V1 X! X8 ]
* @description 描述:4 W7 r2 M* g! t& k: k
* ' _) B( o8 k. ~4 i5 i; _. w# w
*/5 d9 g0 g/ m/ v0 F
public class BaseRespository<T> {
8 X' X: n+ [' G9 |% \9 E" p
. \( H b: b- J) f4 F' r}
7 N0 u) L/ t) c$ m
+ y2 D% \3 k( d8 Z0 X2 ^/ a% e
5 X! ]4 Z& I' ~, k9 _9 T* i2 ]7 [5、建立BaseService类:
1 E8 U5 D- W5 H8 a3 y; ` _, ~- T7 G7 epackage com.javazx.beans.generic.di;) F. d b/ e- m
$ K$ `5 I2 B7 z1 G: p% wimport org.springframework.beans.factory.annotation.Autowired;
) w8 B9 J2 x8 w5 M% j" O5 B Q& p
/**9 T/ e% P. N0 c* N0 j) m
*
5 i8 o' G" e$ R* u3 J, N6 G" T4 j" S * @author 作者 :javazx.com
. q5 d- E. _+ p * @version 创建时间:2015年10月30日 下午8:05:28! ^* q* Q7 v) ]* ^9 t$ Z
* @description 描述:泛型依赖注入
; ^6 R" @: E s- n0 y" X * 5 A5 o) W2 I( q5 ~' B" o
*/& G. H. b8 k) W- _9 m0 b2 s, p
f6 w C `, f& D' K4 \, x! s. [
public class BaseService<T> {* e6 V; i- l# T! g. q% Q/ _/ K* R
@Autowired5 h7 b% j2 x. L. m# X8 ?* H1 W9 s9 j
private BaseRespository<T> baseRespository;
6 }+ _3 `7 Y! y! C* b6 s$ c# h% _. S/ u
public void add() {, z1 d/ e+ Q7 j& c* @1 G
System.out.println("add...");
9 M$ A4 q; e6 r/ K4 t System.out.println(baseRespository);7 N: w' i3 i3 p1 U
}% W( B0 ^1 d* V" ]
}/ s% d1 g6 }9 F5 W/ l* R; L
" v, l) C. P/ o8 r
, \/ h$ _/ f0 w3 ?7 J& v
6、建立UserRespository类:' P* _# B0 J1 T3 M C ~0 v7 a
package com.javazx.beans.generic.di;
; Z' r/ v% v2 X1 _, r% ?% W8 K0 b& o2 D" R4 a! U/ ]2 l
import org.springframework.stereotype.Repository;
( t4 Q; z9 c5 v0 L( `, G; R' ~
2 E2 D. z7 C! }4 c0 N/**
' g/ g5 H/ o* _( m( T# V$ `- f *
$ l6 D5 w" U" C$ D4 P% b6 x4 u, g * @author 作者 :javazx.com6 z z9 d7 r" X& s% G- [
* @version 创建时间:2015年10月30日 下午8:15:37
! F) q0 e1 A2 { * @description 描述:8 m$ s4 Q Y4 Z4 C
*
$ |6 O& a7 z2 i4 B% m: ?( o */$ V. f" {1 X ]8 i
@Repository: q# t7 O a2 X0 `+ F0 {8 N
public class UserRespository extends BaseRespository<User> {
/ s, e4 ^- c1 d& B- P- C" g$ x4 R5 @% C9 T& f: p3 W; R+ f' r
}
* `- m8 @! j+ b @5 h6 l3 ^! G- ^
5 y/ Q! F s4 D2 I4 R& j+ k# M( k$ F8 T; Q* L1 a' [! b' l
7、建立UserService类:! k4 ?1 H% O0 ]1 E
package com.javazx.beans.generic.di;0 z7 O- Y, @+ B I3 C0 {! K6 C
+ z' d% M# z$ ^( \: _7 X0 `import org.springframework.stereotype.Service;
! G6 ^* z+ |8 D8 G4 F4 C4 h2 h: c2 g9 f; c/ R+ P1 t
/**
; S/ @4 f) o* T* i' g# J% Q ** v' A; Y4 }* D
* @author 作者 :javazx.com
. X$ `' |! H& Q * @version 创建时间:2015年10月30日 下午8:12:04 5 n5 m0 K& m6 l R7 N% A
* @description 描述:
# B/ W* |1 t" Q *
8 r7 x( @- Y* w2 l0 M */
- c* D4 O. W+ M: p7 T@Service- ^6 g$ ^( L1 X3 r
public class UserService extends BaseService<User>{
+ M- c3 u5 V7 b
. f, \2 P! ]$ d, {: P}
* K* g" A7 m' u: ?- N0 V" J7 V) Y- ^2 O$ `6 [$ V9 ~
# Q5 P6 g( f0 b2 U# n$ ^2 f8、建立User 类:
' c. K+ _& ^- Kpackage com.javazx.beans.generic.di;
3 W& j5 k7 o5 _* u$ l7 }/**
" z: H' { _0 W! b0 d- @ *
) L( p% a [9 m) O * @author 作者 :javazx.com
- z# z6 ~8 K. x+ o7 ~0 M# @ * @version 创建时间:2015年10月30日 下午8:12:11
& N; M+ {5 ~# }. R# y! d/ [/ w" ? * @description 描述:0 `( b& f$ p' M3 B
*
% Z Q5 Q- a) s- d6 L7 A' X8 @% V5 B */
# o! l* d1 O; u, opublic class User {5 \) F0 X' O& Q
/ c, X; A6 N9 N* n! a5 M
}+ N6 Y! M8 c, u! ^( M
8 s6 k, d I6 W6 L8 z) p) p
; S5 `4 b+ c5 X/ `4 }
9、最后建立测试类:5 ^- p" J& a6 o
package com.javazx.beans.generic.di;
4 q. T, |$ o. z. s v
K" z% H) B7 t1 Mimport org.springframework.context.ApplicationContext;) g$ ^% e& S& N% {6 L$ O
import org.springframework.context.support.ClassPathXmlApplicationContext;
% N' R/ j' Y `6 p' I
/ r# K6 G) \; g9 y/ g" ~/**9 V; }# J2 t1 c+ w! }
* * i# W+ i9 ^* u3 G* D6 b
* @author 作者 :javazx.com
+ u& Y: y$ O" k! T. c: w7 ` * @version 创建时间:2015年10月30日 下午8:19:15
( s% C' n& ^* K, n * @description 描述:
" w+ g$ L7 G, f5 X: A *
1 [! R& H4 H6 y7 G4 S* J$ H2 W */" ~( g z* `6 e, e' e R
public class Main {
2 b0 x& i# a8 Q4 a0 x6 E' q8 C2 C& q1 M1 k$ ^1 j1 A
private static ApplicationContext ac; I- r! g/ [! s2 g U* u+ B
9 s$ p; u Y( Z9 f public static void main(String[] args) {5 k H7 s; f/ m* j2 N2 f
ac = new ClassPathXmlApplicationContext(
1 S+ Y- {. F; j# Q "beans-generic-di.xml");5 @& i/ ^$ s4 D" I* ?# H
UserService uc = (UserService) ac.getBean("userService");, D. ]5 V- z+ W* c; o3 d
uc.add();6 v) }2 S, D3 Z
}4 K8 D, s' D, J* i4 ?# a. t* D
* @+ d1 ?) O4 @8 y
}
+ e" R1 F3 s6 R$ g* ^% T- T
0 O0 `% P7 b# f7 S7 e: j% u
1 a0 A4 m% u. v7 \10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。" ] {- W& A8 A- R
1 J8 a! U1 Q- x8 `0 F% |6 X8 Z& ?$ c( {6 ^3 U: C
$ @' q4 _. n" I' ~+ ~
, z; N" d) _9 c( z! c
9 W* ^$ S9 r% j& f
9 T- R) t/ m; ]% ~+ E6 L' {" U" B7 G8 h% E& ?9 c- _9 h
|
|