|
如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?
3 T! i8 ^- B9 b- z2 C) K
- b4 F) J/ }2 q j5 E可以看我写得代码,相信你会从中找到感觉的。" Y$ O$ K; k. F ?+ R& d8 Q6 |
" {5 h6 X3 _" X3 y
1、eclipse中建立一个java project工程就好了 Q$ R3 ~4 W5 M7 J1 e. c( I! R
2、加入spring相关jar包
}# A7 {' Q/ ?
# b- r/ T" u7 y+ V- S
3 K2 |$ i- A9 [( I+ j# `2 L8 K) |0 N3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml
) j+ P4 K, L2 l<?xml version="1.0" encoding="UTF-8"?>7 m3 b+ {2 @7 T) ~+ w! r* j" l
<beans xmlns="http://www.springframework.org/schema/beans"
9 c( x' P4 F7 v7 h D xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
8 I/ @5 L9 l& R: T$ ~' E5 _: O xmlns:context="http://www.springframework.org/schema/context"7 a3 y/ o! ^3 o# b
xmlns:aop="http://www.springframework.org/schema/aop"6 Y. H) z/ y6 W8 T8 z
xsi:schemaLocation="; t8 y: Q( ~6 P) z# u& t- j4 J) k
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
5 | {' _" J# `9 n5 | http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
7 E8 P N% V- C8 m1 A6 r" q1 [ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ) S y2 t e$ u4 r" ?( q
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">1 Z; ]' p0 z) B0 I
<context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>
* v1 G6 ]+ q: E: F</beans>
3 X# ]7 m7 x+ q, _) g) t& x' [/ I" F$ ~
+ |8 [5 x* F# B2 O1 W- k! Y
4、建立BaseRespository类:0 | r2 u' J5 c) R
package com.javazx.beans.generic.di;
7 O' I, z$ A" O9 l/ y; I/**
! l+ ?; k! E, O. i *+ m( T2 O/ R8 H) {
* @author 作者 :javazx.com t/ Z/ H- G! Y; S
* @version 创建时间:2015年10月30日 下午8:05:03
! B; u' }* q: O$ { * @description 描述:
/ c. C+ Q9 m" w * 9 _, R& ^! j9 E/ R
*/, L, m) i# D5 X1 q$ e2 n7 h ~0 G! e
public class BaseRespository<T> {/ G: n/ y( w: O$ X4 W
5 j4 U4 B; q; p4 l
}
7 @7 F, f- k1 ~* i( {8 W- ~+ X
" `) C6 W" b% a' A
! j0 Y' b8 A9 Q( z+ @ T3 _5、建立BaseService类:
+ e/ D. [7 x6 _* f! p4 Wpackage com.javazx.beans.generic.di;! Q: Z9 `" l% x) y5 V
: ?9 i0 R" g$ @0 m5 l
import org.springframework.beans.factory.annotation.Autowired;
- S/ G2 }* v% A, ^7 O3 _6 m3 G, _
' G9 j$ e0 i" d; g- s/**
- F4 X4 S- ]" J * - K3 U7 S5 B+ e* q* s& a* X
* @author 作者 :javazx.com
0 _# Z: M. t% S7 Q: B, p# V * @version 创建时间:2015年10月30日 下午8:05:286 D# c+ V' [( `4 H3 O+ H3 H7 {9 W
* @description 描述:泛型依赖注入 R9 e+ v' V, b
* $ l& k6 J8 g/ N6 F0 h! b5 b' _
*/
0 g& U1 M/ x h% K8 ]- P, D+ \/ l2 B$ w
public class BaseService<T> {) @1 |, d4 k% _" k8 X8 i3 Y
@Autowired, O: a- x- a5 M/ q' s% F5 I1 W1 @: D
private BaseRespository<T> baseRespository;
! I% n7 o/ e# C8 q! F ?3 V5 a; c* e' _) t1 ~, V
public void add() {. s% v+ s1 w u. N3 n5 c
System.out.println("add...");( d( ~2 b) L" R% |0 x v
System.out.println(baseRespository);9 r# S/ Q4 m1 Z1 r% L- `
}8 I1 g- r8 L5 l; I9 G
}
; ~5 {. U6 ]8 t A+ i" X! N& g
% n7 D2 C3 d( A$ h
% @8 O+ `1 i2 g7 f, d6、建立UserRespository类:! ~3 a* n7 J0 K8 o: F
package com.javazx.beans.generic.di;
! q) {1 t+ Q/ `$ f- A+ w7 {! ]) \# p3 [8 {& \9 v J. D1 q
import org.springframework.stereotype.Repository;/ R4 f9 k8 p% s$ ^
( L* P! s* M# l3 l
/** & m4 k# R% G- p0 \. B
*
# E8 |, S& ^8 F' e& _5 u! t' C * @author 作者 :javazx.com4 r+ T# n7 p6 |9 h( o
* @version 创建时间:2015年10月30日 下午8:15:37 % m/ [5 c' K# i
* @description 描述:% t- k$ T* Z0 t1 t: \
* ( @3 r: ? a: r' S: w: y
*/4 v/ q0 r! a2 B
@Repository
% K- r6 a2 z9 v3 I! s5 ?4 s- xpublic class UserRespository extends BaseRespository<User> {7 V) R8 [$ D- N" s7 {
8 q$ U* e7 Q9 g: d# i* y
}* p& A! M$ U8 }4 K" q8 S O0 F4 [4 H
: F0 w" V3 I4 b( U* P
! v# ^3 @$ U5 t$ Y& `5 f
7、建立UserService类:7 R7 @+ }5 C; O' r1 x, Q
package com.javazx.beans.generic.di;
6 I( m% ~# r- H1 }9 R- c" \. f9 F) N' h) K. Q5 d+ h
import org.springframework.stereotype.Service;- H5 N$ p% }: U" _. k: y5 ?: {
* ^) N5 H- a. f @" n- A% ~
/**
3 `: a' y* _# `. ~ *& \; |( c- {/ V
* @author 作者 :javazx.com
7 i3 {9 ^0 ~! f+ l * @version 创建时间:2015年10月30日 下午8:12:04
& Y. P- G9 e: A: B * @description 描述:
' ~/ w2 p0 ?7 {( m. }5 W * 0 o% \, M# Q0 c7 e
*/
$ w7 _2 h5 \6 e7 k. u) i4 w2 }& @@Service
3 _' d+ N5 }/ T* _! Mpublic class UserService extends BaseService<User>{
+ I/ J: y% l* c4 _/ L5 U7 b/ }" U6 k' e' \3 y1 q
}
2 ?% D3 m6 v$ }% Q2 v: R6 ^( H9 g) V9 _& G7 f& C* p j( a! z/ }
a7 G0 I0 z( l
8、建立User 类:5 I) ~0 I( J( u1 ?' m# T
package com.javazx.beans.generic.di;
5 E6 N# S8 W/ `3 J) B, Q3 X7 e/** & V5 T6 `' g* z3 z3 q0 w
*& S" o3 a. C# `. X( s
* @author 作者 :javazx.com
4 D: l5 b: H2 O3 N% P* P$ ~. W0 Q * @version 创建时间:2015年10月30日 下午8:12:11
7 M+ B" z8 x" \4 }& E F9 a * @description 描述:
! i% R$ m9 W1 r1 [8 M0 m *
. n2 z6 X: @, y# G* ? z */
- H6 R/ k; L5 x% e+ G3 q, y) cpublic class User {) X0 M$ W( Z4 b C- k2 X6 {5 N! u/ b
! V; X& T! }6 b$ f! r}4 ^' H# V5 w- z
8 F' T) n5 V$ N1 S
+ S8 E# v) c* m# i+ c- P! f5 ^9、最后建立测试类:( d! J; H5 k; Q2 N
package com.javazx.beans.generic.di;
+ }0 I1 W8 W8 ^/ v8 M) v2 @; ]! }& o1 `+ e
import org.springframework.context.ApplicationContext;
: q& D# e7 Z) M2 B/ ^ K& m2 p* V7 cimport org.springframework.context.support.ClassPathXmlApplicationContext;- G0 K0 _2 I. e# T9 J; e! s
" A, C4 d i, L5 e
/**7 c2 g; _& i( P+ ^5 C
* 8 ?9 A6 c4 J0 i. a
* @author 作者 :javazx.com
! m1 X: d% b! L: r9 B S * @version 创建时间:2015年10月30日 下午8:19:15; Z* I" o* I/ U- h( g
* @description 描述:
; ?) M% [% m3 B4 A *
/ t, i1 p) {6 k# z7 H+ m */) z7 ^2 d$ x+ ~8 P
public class Main {" P) u! t) g, f. D
( N; i! b8 _- g9 j
private static ApplicationContext ac;
1 u& M# ?# d9 F" ~6 {: X
6 I" n+ W% ^1 D; Z% c+ k1 l public static void main(String[] args) {( s0 ?8 Q% V4 d2 L
ac = new ClassPathXmlApplicationContext(
* x. o& M! l; B3 T "beans-generic-di.xml");8 u: S* X5 |1 E1 J5 [9 o
UserService uc = (UserService) ac.getBean("userService");; A: T( ~) q6 _0 a5 \* @
uc.add();
8 n8 g7 C2 M, b7 U# O, N. V }
9 M1 Z, K6 u, v+ M( l9 L( M \% V' G. K4 ~8 j/ ^
}. t5 {! d- }) Z- s7 C% p8 V3 C
3 t5 J1 G$ r+ |9 e, H% p
9 \2 m, f0 r5 ?% v; d10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。& Y4 g; z3 T# v- }$ d" T7 a. G
6 D' g- [6 t: w& e
$ ~& J s" \; S |8 d
4 |+ G' R6 N* n# {" ~( C
4 i) B7 o8 |3 f$ @, \+ t2 ]1 |( U! `6 Q
- m! n- p3 k7 J; X
' l' F$ N) B7 y; a& I |
|