|
如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?8 x5 @9 Z- i. `% b; `$ `
5 K6 G( t. K" M, i可以看我写得代码,相信你会从中找到感觉的。: \5 v0 w; T8 X b1 f
* J/ |& }# o7 p# G2 O$ r1、eclipse中建立一个java project工程就好了+ A1 a5 b) f E
2、加入spring相关jar包4 _ o9 F7 O* M7 W
4 H: ^9 ~! W% R& X/ `- `* g& e4 V; e; T7 e2 ~- N
3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml8 w) B% t: N# n0 X1 B/ ?9 z
<?xml version="1.0" encoding="UTF-8"?>
. v* O/ U% G3 B2 M% n! \& E" k" e<beans xmlns="http://www.springframework.org/schema/beans"* F& j2 _5 Y5 D. h' r! l
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"1 O8 W0 d/ z7 A3 I+ X/ @
xmlns:context="http://www.springframework.org/schema/context"6 J0 F) Q7 f9 p3 P8 j: B
xmlns:aop="http://www.springframework.org/schema/aop"
* B- M8 B$ _9 P. E" j xsi:schemaLocation="
: {1 a+ K7 {" ^- i0 s4 b+ {1 j3 ^ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 4 l# H8 z$ @( R
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd ) w$ O# U- b1 l& A# G8 z
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- |8 h# |' e* K/ Q http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
7 n9 J0 F; c! y+ _1 h <context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>/ N' Y8 c6 E/ w' @ l1 K
</beans>
" t( X4 m6 E( ~$ K) @
/ {! t7 m: ~% c/ b
7 g- u9 C; k7 s% d+ t% V4、建立BaseRespository类:7 S# t( ]: z- h- a+ q) I2 R4 v
package com.javazx.beans.generic.di;) A! K+ y/ @( G- o% Y
/**
" U; e7 A1 u5 o9 ^0 F- ? *4 ]5 `6 L1 R! L \6 W& m5 S
* @author 作者 :javazx.com
! G) r+ C! ]. ]$ ^ * @version 创建时间:2015年10月30日 下午8:05:03 1 R" Y4 O( }; J+ d# b$ O% s
* @description 描述: I; C; b/ T$ W; h( _
*
" j2 l' J' I7 n" S. `, v */5 k& U+ S& r" _- X/ I
public class BaseRespository<T> {
2 Z: l0 [( |6 B) c. @( m4 c! `+ y
7 G) ^# r; T9 _5 S9 v}3 G' ?7 z* f/ q0 Q' r; ?5 U9 P8 j# u
& W3 Y: k; i& f5 u' r& R
: t w/ i0 i" t) ?- I. j, F5、建立BaseService类:
: A" Y% U3 K; Epackage com.javazx.beans.generic.di;: u) Q9 P- Z/ F# X
7 `; @4 m" ^. w: ]; C0 r7 H
import org.springframework.beans.factory.annotation.Autowired;& T0 s" U3 ~4 o7 C: G
+ F( S8 }$ }" h* E% W) Z1 S" x
/**+ p* H. Q$ V& |1 F3 C. F! b9 ]# E
* / N5 K0 V! G' Z: z: u: U
* @author 作者 :javazx.com
0 D5 t& g4 B7 b F& u6 {' E$ d * @version 创建时间:2015年10月30日 下午8:05:28
* k) B7 Q7 U% R$ l% n, q3 a * @description 描述:泛型依赖注入' \1 a u8 s8 \) t; R5 H- F4 n
* 5 J6 j0 `0 ^7 f
*/
) G1 _, Y+ x2 i# Y8 m9 K6 i2 N5 `8 [, n8 `
public class BaseService<T> {
8 R% D+ \0 L' V& R6 {+ A. {2 @( ?5 T @Autowired3 C; Q! ^% T c( s' G; S8 ~
private BaseRespository<T> baseRespository;
. o7 {/ x: x& J
4 _: y4 z I4 ]: |5 h public void add() {
$ r) X& j$ f0 _* T& S+ Y4 b System.out.println("add...");
1 R8 ]1 b7 t7 m& G System.out.println(baseRespository);. d) k- r& _/ G. @7 i
} M0 E+ f4 f5 f+ p8 f
}# p: t# O3 ~2 f: ?9 j9 H/ R
/ Q/ J Y- \% u! Q4 m s f
4 |( i( Z/ j! `) a A! V% ], w
6、建立UserRespository类:6 Y( v+ S4 D, U8 i& _. q4 T
package com.javazx.beans.generic.di;
3 `9 I1 p2 @1 T- I. [) d. s1 B9 x7 P1 E6 A
import org.springframework.stereotype.Repository;) s1 h7 c9 j! X5 b1 c- S
2 c3 W* Q# h/ F; g' T) E
/**
, {* ]. N4 T. ~7 g1 d7 v# _% x- I *
+ @6 u0 i/ u) s1 n * @author 作者 :javazx.com
2 K( z# j5 _5 G/ T; t" S3 T * @version 创建时间:2015年10月30日 下午8:15:37 $ Y5 _; x E) ^/ C5 Y. w z7 k
* @description 描述:
( ~* n9 ~+ M: h z& J: y4 [( k *
; s! a0 b. P* t; R% a */
& c4 J$ B+ h- |( u8 c@Repository0 k* z$ K: C/ U" ^" i
public class UserRespository extends BaseRespository<User> {
8 p6 ]. y# o0 ~! ?
5 Y A ~4 D1 F5 e}
' ]2 L* N% o/ W! n, B% n( y2 r# X9 s4 {3 @, _+ p- A! r& \( A
$ }7 k. i& t/ s+ d# @+ `
7、建立UserService类:+ ~+ z9 V/ r3 a7 a$ M3 _: s* R
package com.javazx.beans.generic.di;) D6 r$ c: j$ N% ]9 j
3 T% H% O% L* N
import org.springframework.stereotype.Service;4 M0 L2 M# Y* m
9 n$ v% \2 |) R a7 n/** 3 W! o- U2 }) x' A' N9 V( m- n
*& J/ T( D1 B2 ~8 Q. W
* @author 作者 :javazx.com
4 ?! C- u, |; B5 S6 r* X * @version 创建时间:2015年10月30日 下午8:12:04 % O" w1 J# t$ Q0 I& X
* @description 描述:+ m7 t0 j4 q) s
*
p3 S! z! h+ n1 V9 | */$ a3 A; Q& v% ]/ N6 B7 g+ z
@Service
! ?3 H1 V! m2 f4 m0 `public class UserService extends BaseService<User>{" J5 p7 P" F; t/ J, l
' s, U% B- r( ?" \0 U& h}/ ?) n1 `4 r1 ^' E9 I' Y* Q
& H/ I! T4 T& G6 t! S7 C
9 k1 M! Z0 F( Y0 {- W8、建立User 类:
0 r/ e' a. U, `( T- opackage com.javazx.beans.generic.di;# Y' N% K, a! t' X
/**
7 {/ @- i7 K5 e1 d4 Z* o6 y *1 _2 j5 F. {& X( N6 Q* I7 Y
* @author 作者 :javazx.com7 K' Y g% a- o4 P! [
* @version 创建时间:2015年10月30日 下午8:12:11 / S3 n! h( ~ U0 ^8 m) Z. b: Z3 z
* @description 描述:; q1 O$ U4 j% }; }, {
*
3 P+ v3 `! `- u2 ~; H6 K */
* V1 ^( B$ m5 A! S7 Gpublic class User {
- s9 l" I5 D$ Z; x4 Y( k
* b8 t1 w/ g6 U0 {- d& V# }8 V/ `}
- l6 z3 J2 X& _- q3 x% { _0 v- Z* J; g! q& |/ P% _
1 t0 ^) }* U! \( D6 ?& G
9、最后建立测试类:
2 B" k7 B7 N- C2 Z' mpackage com.javazx.beans.generic.di;' C: Z8 |5 o7 u1 T( b7 a
; L, \. O9 C4 l/ A& v7 \import org.springframework.context.ApplicationContext;
. G1 n+ ^! X7 ~3 ?- timport org.springframework.context.support.ClassPathXmlApplicationContext;- h, J8 {) m5 ^, G9 n
L, N$ d6 r: t) N1 E# v( Z3 H6 ~; ^- n/**
* w6 |) x$ O; y * 1 p$ V$ m5 y. B* H# G5 J! c7 V+ M
* @author 作者 :javazx.com( ^; P9 J$ J; A: B/ O1 Z0 O: x' ^
* @version 创建时间:2015年10月30日 下午8:19:15; h0 o3 T- v" q* M- f. E/ d0 B
* @description 描述:
* u, d" N( Y; e * & T* x+ z _$ e
*/, }: e L- E Y& g# x! `: ]
public class Main {$ R( g2 ~ `# u. i
4 ~+ p: n! E9 ^
private static ApplicationContext ac;% s0 m: G1 y) l: r
7 S3 @) g' h) m$ k7 \; \5 l+ h public static void main(String[] args) {
# q! x, {4 [$ y ac = new ClassPathXmlApplicationContext(8 X# F. J9 z6 x, ~- b
"beans-generic-di.xml");
: B1 B- p0 b: b& k7 g" V0 k# C4 ? UserService uc = (UserService) ac.getBean("userService");1 x/ V8 E- e# }# q. M% c1 K; h/ f
uc.add();* ~, r+ V, o& y) Q
}" _" G |, ~- K% s
+ N+ G6 L4 j5 S8 v" u9 r}1 z9 }0 p. y2 ]
* ]* H2 Q V4 \5 C5 e8 ~2 `3 L0 h3 Y/ s0 q
10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。2 t/ [- Y& X' O7 }4 W6 H
9 Y1 Z, m: O6 D' p9 E c/ `
: y t) E0 H7 }6 T5 Q$ M0 [/ ?* p" C/ {4 R1 r3 [& I" K" x
$ k) y. G( @* x2 t* b
8 J; D: b* s* o- `
" L- l4 ^. x$ _/ b
3 s9 g9 i0 N4 F ]7 G% i |
|