java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3182|回复: 1

【spring技术】什么是泛型依赖注入?

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66375

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2015-10-30 20:46:28 | 显示全部楼层 |阅读模式
    如果你正在学习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 微博桌面截图_20151030203818.jpg 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
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-20 16:20
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    27

    帖子

    63

    积分

    普通会员

    Rank: 2

    积分
    63
    发表于 2016-11-20 16:41:50 | 显示全部楼层
    不错好资源 可以用
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-12-22 14:27 , Processed in 0.191212 second(s), 33 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表