java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2977|回复: 1

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66101

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

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

    使用道具 举报

  • 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-4-30 02:37 , Processed in 0.077758 second(s), 32 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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