|
如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?
% }7 r. g5 T7 u6 U- o/ X( g% h" ~; e) g- F
可以看我写得代码,相信你会从中找到感觉的。
* Z1 J8 W/ m, \* @% I n/ B1 c( g3 e3 o# w
1、eclipse中建立一个java project工程就好了$ p0 B! g' S9 G% J* D; q
2、加入spring相关jar包5 q# `2 i+ H7 v6 Z3 x; Y! i
1 E! {; C% Q+ F. w# f% j7 W
% D( q0 A+ f1 H! Z% D6 t3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml
6 C9 U: k. J8 U0 ]9 a<?xml version="1.0" encoding="UTF-8"?>
( c, d$ ]4 U# R<beans xmlns="http://www.springframework.org/schema/beans"
/ U a1 f! x* N1 H" y4 R2 D% R* W xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"9 B& \/ f2 w& E
xmlns:context="http://www.springframework.org/schema/context"- {8 M# r, A* u i0 |
xmlns:aop="http://www.springframework.org/schema/aop"+ I$ s, j3 C) T6 R; k! W8 X8 o
xsi:schemaLocation="
9 C# Y" N3 }, I% {* i; Q1 N http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
" ]! |4 _+ N& C$ s http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
' I3 h" I3 M* U) u; L. r6 t: @ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
* s; e- L i- ] http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">; M/ @% X/ [. j- d# T
<context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>2 c4 f' }0 t: A. C9 E: z
</beans>& x" G/ b9 U! @" @$ r/ @# F
) U% m1 F" H7 ~6 h3 \
* u4 B2 F# |- `. @9 |! F' h
4、建立BaseRespository类:
( P) N0 x$ Q" U4 Hpackage com.javazx.beans.generic.di;
5 p: _- Q8 O1 l$ Y* C' B) {/**
9 k! B7 Q D" c1 `! \3 W *
4 |) b1 @3 v$ W' X: j * @author 作者 :javazx.com: N0 J& y/ n7 b9 c V$ S
* @version 创建时间:2015年10月30日 下午8:05:03
, E* `0 d( @, r3 n9 U/ H * @description 描述: I8 V" ?- F* |" M
*
9 s/ \2 J: a' c4 w; Z5 b */
& D; z. Y* b, H, S. y2 U" r1 hpublic class BaseRespository<T> {
! d! ]$ k; M E0 U/ D$ f
7 Z5 @5 s: K% U3 y# X' C& q}& Y! s. @9 f& h3 Q3 ^
1 c. N* D8 l9 ]( b
; `4 B) e7 _* ~5 B, Z# ]$ x4 W
5、建立BaseService类:" H3 h+ [6 l& A$ j
package com.javazx.beans.generic.di;
, T7 K+ N& m! ^1 |6 u' j
$ c# i* ^- }8 T1 i" P* | vimport org.springframework.beans.factory.annotation.Autowired;
: o3 q+ H0 y$ c1 C/ \/ C3 o
) o: ?# N0 d6 x- ]) V. {1 d) L/**$ Y8 \' d5 P5 T
* / S3 [# o, V# J6 p- G
* @author 作者 :javazx.com
1 N6 W+ I3 @) O+ Q; \5 M * @version 创建时间:2015年10月30日 下午8:05:28
8 t0 X: L8 `* q* f) i" z% D( u P * @description 描述:泛型依赖注入
# j; u7 R) x% c/ R2 J *
. W+ D& F, T/ M0 B */( p$ M8 G$ z$ \
6 x" t, K) V5 }9 F4 `public class BaseService<T> {
* P9 O8 z/ d6 S4 V" d2 Y @Autowired
+ [. g7 T* k/ K6 K% z private BaseRespository<T> baseRespository;3 A8 O3 h( d/ X, L8 w! h9 L3 R& ~
+ V% ?& q* p+ N- ]7 c
public void add() {- U1 I8 Q8 l+ l1 U$ w
System.out.println("add..."); d' M0 w' U2 t/ U f
System.out.println(baseRespository); d9 t9 Y; \: f2 `1 \; H( D
}% u7 @1 D1 K' j% |; p3 i
}
6 L* \7 j" e# A, t Y' O0 |4 h, v; H
$ S5 U+ x# b! H. M6、建立UserRespository类:
, G- D; |) U$ v8 ^- m2 j6 _" `% U" kpackage com.javazx.beans.generic.di;
; ] P/ }* P. Y7 z' I
7 S6 Y. S& C! E: {9 I# |import org.springframework.stereotype.Repository;
8 p+ O$ V0 P h! M- T9 D4 n3 ?3 Y Y T# O2 @# \5 I# h' X3 l
/**
# F+ D) Q$ }3 U% l+ X *
; Q, b3 Q8 ?+ X+ ?6 w% x * @author 作者 :javazx.com8 i5 X( p1 o! l$ T5 ?6 K7 ]
* @version 创建时间:2015年10月30日 下午8:15:37
; M o$ Q6 {2 }- c8 B1 ] U% l& a * @description 描述:
# G2 y, } X' f0 m3 s' \9 _ * 8 E* B8 ^4 A1 T8 \
*/
$ I& C) a9 E# { D@Repository
8 T3 P# |$ Y& ^4 s* epublic class UserRespository extends BaseRespository<User> {
; R, `8 U0 M1 ^) ]! S" c' n# m ?9 W# i0 R4 o" ]
}
& [0 }) ~- f# w8 [7 r; g
# P$ N3 G! ^- I3 j
; n" n0 H0 X6 H( r7、建立UserService类:
# w4 U5 v# H$ N/ O# Gpackage com.javazx.beans.generic.di;
' Z( R* ^# h9 F! S. g0 W& L m& q$ ~, L+ C$ ^* n# P% ]& v' _) C
import org.springframework.stereotype.Service;6 {$ L$ A/ X9 R) f
& V) ~: ~9 M8 u/ g5 N1 D/** $ m! [7 k V; J% o
*: N3 w' M2 I1 E, X
* @author 作者 :javazx.com
2 b- q/ W+ p1 D9 M- U- K+ G * @version 创建时间:2015年10月30日 下午8:12:04
2 C# r, G! N4 W * @description 描述:
6 u: ]( [" _- r *
# i; K k7 h1 j" O5 j6 J */
7 [8 Q2 }, a/ f L" U@Service8 d' w, I6 |1 J* P& I7 A
public class UserService extends BaseService<User>{) U5 p' z8 B) b# V
+ c# c) X @# g( l/ R}3 s. l( B% b# C" V5 o
$ E+ D! T T) P7 D, V% H
- t) {; y- n/ N$ O
8、建立User 类:3 j4 t# O2 r' M! i7 l+ W& V
package com.javazx.beans.generic.di;! u: _% `% b$ s- U# p+ z$ E6 v& J
/**
' D% d8 V# |; H. {7 H& W. n *
" \3 t0 S& V) t2 R( W0 x * @author 作者 :javazx.com1 R- f: ~& ]/ R1 S$ O4 r: @
* @version 创建时间:2015年10月30日 下午8:12:11 % u4 R- H- m9 V. X7 M1 I/ }2 @9 J
* @description 描述:; ~5 X4 ]6 U5 {
* # ]- w+ ]- _: k( {2 m* N5 Q* f
*/' v& F+ E1 T1 w+ O- ?
public class User {7 q0 d$ V7 X0 X2 R2 L. t: Y) h
! { D+ t0 g1 v1 R# I# ~3 {6 `}7 w2 N9 ^5 x0 W/ b3 o* U. e
# e) ?$ x% F- o3 h
/ W- Q- }0 i6 C$ C q; J2 @9、最后建立测试类:
, _6 Q, A: s( ]) n" ipackage com.javazx.beans.generic.di;
# X$ i' T8 K( c: q/ Q. x" w e' M3 h' u( a4 {' n
import org.springframework.context.ApplicationContext;0 c F8 p5 L( k/ g0 m
import org.springframework.context.support.ClassPathXmlApplicationContext;
U1 A, _+ F5 G6 F4 I1 P, c/ X4 r) h" P9 y
/**
3 Y% v `4 o+ c$ |7 A0 ^ *
& \% Z" e4 X1 W * @author 作者 :javazx.com
4 @. x$ K. f/ i7 }" L0 t * @version 创建时间:2015年10月30日 下午8:19:153 C. Z; U1 D' Q5 D0 }
* @description 描述:
: K* s; N$ Q" l8 }+ \* B * ' _6 J6 K5 ]( \3 y. J' r0 y7 y
*/8 M/ ~; I+ p) ]* A+ d" U- G& X3 }2 q
public class Main {
# @- [2 V7 d8 i3 a! n+ B @! @8 d$ Q$ l7 ]# d. K7 c% f2 F" B2 o) ~% I
private static ApplicationContext ac;
$ n: y5 t4 ~- P7 C3 ?4 v% l" I) f( h2 }8 B9 J7 e3 z
public static void main(String[] args) {
/ c1 t' r) S! R/ T7 a$ q ac = new ClassPathXmlApplicationContext(
2 X9 I& J( |% N# {$ u q! i "beans-generic-di.xml");1 m! z& ^9 ~' i% _
UserService uc = (UserService) ac.getBean("userService");
# W2 n, S }% y% D8 {( a& B1 g uc.add();' k B0 G# R, a6 m7 M
}! H3 r3 U8 i6 Z$ l# {' F
$ {: D, {; m6 r+ x8 e}* J: o4 u9 r! ~: d8 _' }
) f2 w% b2 P7 s8 [4 T, s1 P
$ l. `8 O4 G' N: I0 V10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。
6 w( ^7 Z) g. g, \. Y: H
; |, L }, d( j6 c) d) h" \. |* p% z( l4 S2 z# y
% k* _1 M% X6 a+ ~
( p; b6 G% M/ B
. o l- |8 G1 _3 [) V X+ r
/ ^4 H, }4 R! m* X8 m
6 p! Y+ Q$ t9 u1 X# Z6 t |
|