|
如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?
1 N& g- D9 m9 t0 @) `# q
1 V* [8 w6 {" f; o* t" V2 Y可以看我写得代码,相信你会从中找到感觉的。/ ^3 g+ V3 g% x
" q! d( t3 Q9 @, M j& v& R6 H1、eclipse中建立一个java project工程就好了5 `5 y2 v( x. i% t0 l9 R
2、加入spring相关jar包; U) i2 M+ u. ~, W$ G3 r
- B$ _* x$ L0 N$ [% p p7 w7 a Z
, ?* s, _) p. |. C+ U @- \* g3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml/ M& E) ?# y# l$ x8 |4 U1 {
<?xml version="1.0" encoding="UTF-8"?>
6 g$ d5 `) x9 P<beans xmlns="http://www.springframework.org/schema/beans"3 E3 G" R! Y7 q, q
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"/ O; l# O f% D# c
xmlns:context="http://www.springframework.org/schema/context"/ [- `% i: }/ L, R
xmlns:aop="http://www.springframework.org/schema/aop"
; V3 S; I4 r: R u& X xsi:schemaLocation="
k# X( g/ `1 F) A3 G http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
& j2 z/ @7 \2 _ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 4 U2 {( \3 K- y+ E, F# p/ z
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd & {. ]) r9 T" i5 i$ M
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
: s# p# ]( W, C0 u' B( v3 { <context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>
% [, L9 d. P) r7 k7 R5 E</beans># I r) `2 I6 w" X- G3 ~
0 ~5 t3 B0 j( U4 A/ U! C
$ p) [6 x. A; ~8 t$ v. ^
4、建立BaseRespository类:. i% H, J- b# M" N% I( f! w% r
package com.javazx.beans.generic.di;6 @, Q7 c# R3 v5 Q' t
/** % o! `5 {; n6 G' ]6 \
*+ m! L( }6 e5 v8 \& o
* @author 作者 :javazx.com: q! _5 y u# p( m" @4 X
* @version 创建时间:2015年10月30日 下午8:05:03
5 I( Y. c0 O/ s( X7 Q7 P8 F3 Y * @description 描述:& _3 f2 ~: O& l+ z
*
! B; `! o+ {# h6 t G% I2 @2 s */
$ G! e h1 N# r* Vpublic class BaseRespository<T> {$ q1 h7 D- K' H( ~ p6 E" Q8 m9 v" k
' a2 f2 o) ~6 g& s: u/ x- U
}
0 T0 v7 s& |7 _. q" p: `* r& e2 t
% W M, k* l; _( _
5、建立BaseService类:
3 t! R% z( V- G7 O" P: mpackage com.javazx.beans.generic.di;
# X/ R5 |7 ^% m; S4 F* A0 B* v; o' ?7 q& a1 w7 |# Y) Y
import org.springframework.beans.factory.annotation.Autowired;; o) H+ A, x9 L
9 {& K0 S( l" r8 @/**# w2 V( J" E* V( } Y* t8 m4 |
*
" B+ _: \! F* K V! r5 X0 h * @author 作者 :javazx.com
/ v9 E4 w! z: r, j& K- F6 r, F * @version 创建时间:2015年10月30日 下午8:05:28
) p# L! x% T4 d% W1 E * @description 描述:泛型依赖注入
5 |0 m/ z* b C6 i5 h+ r- t * 9 h$ x# U$ B' M4 J1 r/ b
*/
% N7 Y5 `+ y1 S6 x, Y8 V! W) H+ C$ y: l9 C
public class BaseService<T> {
1 ?/ h. X7 C- V: P/ f% R @Autowired
3 k( ]1 Y! m, |: R private BaseRespository<T> baseRespository;5 P0 w" p' m9 E5 f
. Q! a7 F! A8 _* |- X' D
public void add() {
4 l& s/ P9 {; a! z& v" w5 [0 }; _ System.out.println("add...");
, P- [ H/ m9 X$ F( P" b9 t" T; q System.out.println(baseRespository);
1 N& _5 O2 z7 T5 n }& S; X/ D! J2 g+ H
}
! j( n& `4 F6 a# k6 H8 o5 B9 y- E9 |$ ?" d1 D
4 z5 F) P) b8 O6 [7 c0 b% p3 O9 K6、建立UserRespository类:$ Z2 Z/ W) L0 o. t3 N2 V: C9 g. C
package com.javazx.beans.generic.di;
9 e% t( r+ k0 V
1 o r8 R$ t- z3 ~% j5 `# U& o! oimport org.springframework.stereotype.Repository;$ x5 D6 `$ h3 }! F3 E% \# L
% I/ }; z1 q* O- V& T/**
2 ^$ D/ x" j4 P *
+ Y1 H; I/ D% c * @author 作者 :javazx.com% Q9 D- l# X; n9 U2 E
* @version 创建时间:2015年10月30日 下午8:15:37 % D: @: u+ G4 S6 k6 ]
* @description 描述:8 Z9 Q. k8 j7 O9 U$ Q
* 9 P: \( ^. U; E( I2 ^" A
*/
! {* @' U4 v* r$ F. z' {@Repository
- b8 o9 L% L$ r8 N' Epublic class UserRespository extends BaseRespository<User> {& e- {4 A5 s) l
0 C+ d7 Y' `& p; E2 ]: R}8 c' s7 o! B' ~, G
2 K* d0 s0 `* Y, S' I q3 b- e$ I
! j$ o: g7 e5 `- ]4 K% ]( E1 u
7、建立UserService类:
2 f8 o. L# \8 }* m; ypackage com.javazx.beans.generic.di;
- K; G1 l( ~$ D: K7 y# H: H0 U: a& O l0 ?: }: X
import org.springframework.stereotype.Service;
! m! j: t+ P3 y7 C2 w3 i e
* F) I# @. W4 X9 f% }/** 5 l1 J' O% z" j8 E" {3 x' U
*
) e. y7 x( z. k) ?& g * @author 作者 :javazx.com
) _3 G3 K% ]+ z% c * @version 创建时间:2015年10月30日 下午8:12:04
- m1 s' L# y! b4 ^2 x. | * @description 描述:, j. b& o& q5 W8 Y
*
& T. v; X% O4 A+ }9 J1 Q */( `! w8 P' [* z2 H, L0 C
@Service
) m n, q2 v1 [" k: y- C7 Cpublic class UserService extends BaseService<User>{
8 Y, `7 G5 x; P- T! f
! u2 B2 W5 }5 V( o" v8 _; ]9 c( [}
' k# \. n! K# i' ]/ T1 Z7 J( T. \; \4 Q# `7 d; P& m+ ^( s1 s4 Y6 s
7 C3 Y) I" d5 ]" g8、建立User 类:4 C/ Q1 J' I) ?/ ]+ |, E
package com.javazx.beans.generic.di;
* W: z1 q; D- t1 \4 R: d/**
2 m9 o8 ^8 g" x4 O. V *1 ^0 _8 J) |& V2 c0 w% a: K
* @author 作者 :javazx.com; D+ Q9 }$ u1 Z( z7 X/ B5 z
* @version 创建时间:2015年10月30日 下午8:12:11 8 ~$ |$ N9 f8 X9 x5 Q; p
* @description 描述:: D. L' p5 P! J
* & a M$ R9 x% ]7 F+ ]1 Q, ]5 r
*/5 z7 m- C" {6 j% T- n
public class User {
4 R. {0 Q5 d+ X
$ d) f2 a. r2 G D) r7 X5 V: d}
. E* a: \; W+ q- C1 H& r: r! e' B/ A
# w4 B, P: x1 R6 I
$ t3 g3 Y' Y ?6 P. Y9、最后建立测试类:; e: q, l# ^2 S* A2 \2 J
package com.javazx.beans.generic.di;
9 Y' x s6 W/ m t, F7 d- ]3 v* {+ @
import org.springframework.context.ApplicationContext;
7 r8 [6 ?6 u6 l, X2 ^8 _6 Simport org.springframework.context.support.ClassPathXmlApplicationContext;7 }( a. {$ w/ j
6 I/ r- c# O: E4 D3 p/**1 p9 S& h p+ C& j) \9 [
*
}$ ? O8 K+ O0 a- _: R4 I$ Q * @author 作者 :javazx.com
( T' N. P+ V- z% M! i * @version 创建时间:2015年10月30日 下午8:19:15( D; f2 Q' B! \( @" s
* @description 描述:/ l' F6 \5 e' ?! V$ j- {
* 8 |3 a' Z) ~( l% p4 n! C, z
*/
5 r8 z- o/ b) npublic class Main {
4 `) X9 y6 _2 G' ]; X- ]; |( b5 p" r9 O% c7 t' k. V+ o
private static ApplicationContext ac;; d; Y3 _) t2 c3 {4 V
! p% @ g$ M' Y5 }( o0 h public static void main(String[] args) {" M+ h& ?: W1 K
ac = new ClassPathXmlApplicationContext(
4 V) u" F- e& X+ X$ a "beans-generic-di.xml");
; i4 _+ Z5 S! |9 p) A8 i UserService uc = (UserService) ac.getBean("userService");
" V7 H% `" K, O+ ^# q e uc.add();
/ e4 X& [" k" J6 N4 X }- _9 ]: S/ W: K
9 S' a2 ^- G6 C% D5 k0 b
}& q, g* q i# x# A
3 {& U$ |- ^$ L, ?3 c
( @& d0 {' f/ H( p10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。
; Q3 c1 B, ^. P/ ?3 ~. ^3 o3 Z1 Y$ M4 ~# p L4 D
# X c0 C0 F$ ^% C8 u/ n- F% z% N" J+ q" _" s; \! W
. t, x( P! `7 o7 l& @, Y$ E; } E( \# ?3 q
. Q) m' Y8 K5 Q6 Q/ d: i
8 g$ r1 N# |6 p6 v) O |
|