java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3158|回复: 1

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66345

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

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

    使用道具 举报

  • 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-11-21 21:14 , Processed in 0.128694 second(s), 31 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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