java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3258|回复: 1

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

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

    [LV.Master]出神入化

    2062

    主题

    3720

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66592

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

    发表于 2015-10-30 20:46:28 | 显示全部楼层 |阅读模式
    如果你正在学习spring语言,并且是最新的spring4.x,那么我相信你应该知道这个名词“泛型依赖注入”,这就是spring4.0中的一个新特性(在spring语言的2.x和3.x中是的确不存在的概念),那么也许你想问到底什么是spring中的泛型依赖注入呢?
    1 N& g- D9 m9 t0 @) `# q
    1 V* [8 w6 {" f; o* t" V2 Y可以看我写得代码,相信你会从中找到感觉的。/ ^3 g+ V3 g% x

    " q! d( t3 Q9 @, M  j& v& R6 H1、eclipse中建立一个java project工程就好了5 `5 y2 v( x. i% t0 l9 R
    2、加入spring相关jar包; U) i2 M+ u. ~, W$ G3 r
    微博桌面截图_20151030203818.jpg - B$ _* x$ L0 N$ [% p  p7 w7 a  Z

    , ?* s, _) p. |. C+ U  @- \* g3、src下建立spring配置文件,我这里叫作:beans-generic-di.xml/ M& E) ?# y# l$ x8 |4 U1 {
    <?xml version="1.0" encoding="UTF-8"?>
    6 g$ d5 `) x9 P<beans xmlns="http://www.springframework.org/schema/beans"3 E3 G" R! Y7 q, q
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"/ O; l# O  f% D# c
            xmlns:context="http://www.springframework.org/schema/context"/ [- `% i: }/ L, R
            xmlns:aop="http://www.springframework.org/schema/aop"
    ; V3 S; I4 r: R  u& X        xsi:schemaLocation="
      k# X( g/ `1 F) A3 G        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
    & j2 z/ @7 \2 _        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd  4 U2 {( \3 K- y+ E, F# p/ z
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  & {. ]) r9 T" i5 i$ M
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    : s# p# ]( W, C0 u' B( v3 {        <context:component-scan base-package="com.javazx.beans.generic.di"></context:component-scan>
    % [, L9 d. P) r7 k7 R5 E</beans># I  r) `2 I6 w" X- G3 ~
    0 ~5 t3 B0 j( U4 A/ U! C
    $ p) [6 x. A; ~8 t$ v. ^
    4、建立BaseRespository类:. i% H, J- b# M" N% I( f! w% r
    package com.javazx.beans.generic.di;6 @, Q7 c# R3 v5 Q' t
    /** % o! `5 {; n6 G' ]6 \
    *+ m! L( }6 e5 v8 \& o
    * @author 作者 :javazx.com: q! _5 y  u# p( m" @4 X
    * @version 创建时间:2015年10月30日 下午8:05:03
    5 I( Y. c0 O/ s( X7 Q7 P8 F3 Y * @description 描述:& _3 f2 ~: O& l+ z
    *
    ! B; `! o+ {# h6 t  G% I2 @2 s */
    $ G! e  h1 N# r* Vpublic class BaseRespository<T> {$ q1 h7 D- K' H( ~  p6 E" Q8 m9 v" k
    ' a2 f2 o) ~6 g& s: u/ x- U
    }
    0 T0 v7 s& |7 _. q" p: `* r& e2 t
    % W  M, k* l; _( _
    5、建立BaseService类:
    3 t! R% z( V- G7 O" P: mpackage com.javazx.beans.generic.di;
    # X/ R5 |7 ^% m; S4 F* A0 B* v; o' ?7 q& a1 w7 |# Y) Y
    import org.springframework.beans.factory.annotation.Autowired;; o) H+ A, x9 L

    9 {& K0 S( l" r8 @/**# w2 V( J" E* V( }  Y* t8 m4 |
    *
    " B+ _: \! F* K  V! r5 X0 h * @author 作者 :javazx.com
    / v9 E4 w! z: r, j& K- F6 r, F * @version 创建时间:2015年10月30日 下午8:05:28
    ) p# L! x% T4 d% W1 E * @description 描述:泛型依赖注入
    5 |0 m/ z* b  C6 i5 h+ r- t * 9 h$ x# U$ B' M4 J1 r/ b
    */
    % N7 Y5 `+ y1 S6 x, Y8 V! W) H+ C$ y: l9 C
    public class BaseService<T> {
    1 ?/ h. X7 C- V: P/ f% R        @Autowired
    3 k( ]1 Y! m, |: R        private BaseRespository<T> baseRespository;5 P0 w" p' m9 E5 f
    . Q! a7 F! A8 _* |- X' D
            public void add() {
    4 l& s/ P9 {; a! z& v" w5 [0 }; _                System.out.println("add...");
    , P- [  H/ m9 X$ F( P" b9 t" T; q                System.out.println(baseRespository);
    1 N& _5 O2 z7 T5 n        }& S; X/ D! J2 g+ H
    }
    ! j( n& `4 F6 a# k6 H8 o5 B9 y- E9 |$ ?" d1 D

    4 z5 F) P) b8 O6 [7 c0 b% p3 O9 K6、建立UserRespository类:$ Z2 Z/ W) L0 o. t3 N2 V: C9 g. C
    package com.javazx.beans.generic.di;
    9 e% t( r+ k0 V
    1 o  r8 R$ t- z3 ~% j5 `# U& o! oimport org.springframework.stereotype.Repository;$ x5 D6 `$ h3 }! F3 E% \# L

    % I/ }; z1 q* O- V& T/**
    2 ^$ D/ x" j4 P *
    + Y1 H; I/ D% c * @author 作者 :javazx.com% Q9 D- l# X; n9 U2 E
    * @version 创建时间:2015年10月30日 下午8:15:37 % D: @: u+ G4 S6 k6 ]
    * @description 描述:8 Z9 Q. k8 j7 O9 U$ Q
    * 9 P: \( ^. U; E( I2 ^" A
    */
    ! {* @' U4 v* r$ F. z' {@Repository
    - b8 o9 L% L$ r8 N' Epublic class UserRespository extends BaseRespository<User> {& e- {4 A5 s) l

    0 C+ d7 Y' `& p; E2 ]: R}8 c' s7 o! B' ~, G
    2 K* d0 s0 `* Y, S' I  q3 b- e$ I
    ! j$ o: g7 e5 `- ]4 K% ]( E1 u
    7、建立UserService类:
    2 f8 o. L# \8 }* m; ypackage com.javazx.beans.generic.di;
    - K; G1 l( ~$ D: K7 y# H: H0 U: a& O  l0 ?: }: X
    import org.springframework.stereotype.Service;
    ! m! j: t+ P3 y7 C2 w3 i  e
    * F) I# @. W4 X9 f% }/** 5 l1 J' O% z" j8 E" {3 x' U
    *
    ) e. y7 x( z. k) ?& g * @author 作者 :javazx.com
    ) _3 G3 K% ]+ z% c * @version 创建时间:2015年10月30日 下午8:12:04
    - m1 s' L# y! b4 ^2 x. | * @description 描述:, j. b& o& q5 W8 Y
    *
    & T. v; X% O4 A+ }9 J1 Q */( `! w8 P' [* z2 H, L0 C
    @Service
    ) m  n, q2 v1 [" k: y- C7 Cpublic class UserService extends BaseService<User>{
    8 Y, `7 G5 x; P- T! f
    ! u2 B2 W5 }5 V( o" v8 _; ]9 c( [}
    ' k# \. n! K# i' ]/ T1 Z7 J( T. \; \4 Q# `7 d; P& m+ ^( s1 s4 Y6 s

    7 C3 Y) I" d5 ]" g8、建立User 类:4 C/ Q1 J' I) ?/ ]+ |, E
    package com.javazx.beans.generic.di;
    * W: z1 q; D- t1 \4 R: d/**
    2 m9 o8 ^8 g" x4 O. V *1 ^0 _8 J) |& V2 c0 w% a: K
    * @author 作者 :javazx.com; D+ Q9 }$ u1 Z( z7 X/ B5 z
    * @version 创建时间:2015年10月30日 下午8:12:11 8 ~$ |$ N9 f8 X9 x5 Q; p
    * @description 描述:: D. L' p5 P! J
    * & a  M$ R9 x% ]7 F+ ]1 Q, ]5 r
    */5 z7 m- C" {6 j% T- n
    public class User {
    4 R. {0 Q5 d+ X
    $ d) f2 a. r2 G  D) r7 X5 V: d}
    . E* a: \; W+ q- C1 H& r: r! e' B/ A
    # w4 B, P: x1 R6 I
    $ t3 g3 Y' Y  ?6 P. Y9、最后建立测试类:; e: q, l# ^2 S* A2 \2 J
    package com.javazx.beans.generic.di;
    9 Y' x  s6 W/ m  t, F7 d- ]3 v* {+ @
    import org.springframework.context.ApplicationContext;
    7 r8 [6 ?6 u6 l, X2 ^8 _6 Simport org.springframework.context.support.ClassPathXmlApplicationContext;7 }( a. {$ w/ j

    6 I/ r- c# O: E4 D3 p/**1 p9 S& h  p+ C& j) \9 [
    *
      }$ ?  O8 K+ O0 a- _: R4 I$ Q * @author 作者 :javazx.com
    ( T' N. P+ V- z% M! i * @version 创建时间:2015年10月30日 下午8:19:15( D; f2 Q' B! \( @" s
    * @description 描述:/ l' F6 \5 e' ?! V$ j- {
    * 8 |3 a' Z) ~( l% p4 n! C, z
    */
    5 r8 z- o/ b) npublic class Main {
    4 `) X9 y6 _2 G' ]; X- ]; |( b5 p" r9 O% c7 t' k. V+ o
            private static ApplicationContext ac;; d; Y3 _) t2 c3 {4 V

    ! p% @  g$ M' Y5 }( o0 h        public static void main(String[] args) {" M+ h& ?: W1 K
                    ac = new ClassPathXmlApplicationContext(
    4 V) u" F- e& X+ X$ a                                "beans-generic-di.xml");
    ; i4 _+ Z5 S! |9 p) A8 i                UserService uc = (UserService) ac.getBean("userService");
    " V7 H% `" K, O+ ^# q  e                uc.add();
    / e4 X& [" k" J6 N4 X        }- _9 ]: S/ W: K
    9 S' a2 ^- G6 C% D5 k0 b
    }& q, g* q  i# x# A
    3 {& U$ |- ^$ L, ?3 c

    ( @& d0 {' f/ H( p10、运行main方法就可以了啊!相信你对spring泛型依赖注入应该有所了解了吧,如果还有哪些疑问,请直接回帖。
    ; Q3 c1 B, ^. P/ ?3 ~. ^3 o3 Z1 Y$ M4 ~# p  L4 D

    # X  c0 C0 F$ ^% C8 u/ n- F% z% N" J+ q" _" s; \! W

    . t, x( P! `7 o7 l& @, Y$ E; }  E( \# ?3 q

    . Q) m' Y8 K5 Q6 Q/ d: i
    8 g$ r1 N# |6 p6 v) O
    回复

    使用道具 举报

  • 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, 2025-2-23 12:02 , Processed in 0.305106 second(s), 36 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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