a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 111|回复: 1

[基础知识] JAVA基础:Java的Spring注解问题

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
 Spring2之后,出现很多注解,这些注解让Spring的配置变得混乱起来,因此,别人力排Spring的注解。   注解引发的问题:/ j+ H5 p6 {8 f0 S6 s$ I* N
  1、缺乏明确的配置导致程序的依赖注入关系不明确。) x* `9 y* i$ v0 `
  2、不利于模块化的装配。
  f3 k8 b- y" e! Q5 }  3、给维护带来麻烦,因为你要根据源代码找到依赖关系。
2 x& }5 O( g* R  4、通用性不好。如果你哪天抛开了Spring,换了别的Ioc容器,那么你的注解要一个个的删除。
/ n: E: H2 D! {7 Q4 h: ]2 L  但是很多傻X级的程序员还偶尔给你用点,或半用半不用,当你问及的时候,还一本正经的说某某某书上就是这么用的!!!如果你接手他的代码,会很郁闷。/ \' z. R$ b: w( u" Q; S" ~
  这里写个例子,为的是看懂带注解的代码,不是推崇注解有多高级,真没必要。
6 y' R. o0 ]& _  _# Q( \8 Q  package lavasoft.springstu.anno;
7 ~3 G9 L! y" A6 w4 ?5 o/ Q  /**
' o8 r3 Y* p  i. ~  * 一个普通的Bean
* [3 P+ \/ t- S; s  q0 {4 Z3 d& S  *
  R6 r/ p8 e$ k; O* ^+ K  */+ L9 p' H/ Z& I6 w# V6 S7 k
  public class Foo {- h; U5 x. j0 T8 r& J
  private String name;
1 f6 R+ j2 _( n$ n, P, a  public Foo(String name) {5 g& n3 m& e( J5 f
  this.name = name;- n- `( `+ d! O- @6 @) a; O
  }
; c  d4 L- r& B* M: H  public String getName() {
& t5 ]% ^: f4 l! m  return name;4 L2 o, [; C, u5 \  ~% s4 A) V
  }
) S& W# s2 r, L8 q- G3 x  i public void setName(String name) {% `- Y0 {  K( b2 X4 c: {* Z
  this.name = name;5 H  u+ G  p% m; f; H
  }
3 Q+ x+ D- Q5 W- _$ R  }
% ]* w2 q& |' B  package lavasoft.springstu.anno;
" D8 d5 o  p- T$ I8 n6 ^5 S  import org.springframework.beans.factory.annotation.Autowired;8 r& c! ]" k. H" S' \- @. B9 L
  /**
$ ]+ n0 x- y: a" s% A) b4 [  * Spring自动装配的注解
; q7 V8 e+ _2 g7 q$ T7 c) U( \  *# o1 r* `- Z# z+ {2 ~" r* y
  */: Q6 ?) h7 z! Q5 X
  public class Bar {
! h5 e$ O. G6 i" |/ X  @Autowired(required = true)
' J) _- n) s8 l  private Foo foo;
1 }5 o. m4 P: |8 q  c  public void f1() {$ [2 j, m1 A" C& m: [" q% Z7 q) X
  System.out.println(foo.getName());
; L% p2 h5 ?  ^+ k  }
: j/ G2 n- G6 N7 V) M. Z( G  N+ y( r+ s
  }
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:28 | 显示全部楼层

JAVA基础:Java的Spring注解问题

</p>  9 a8 H& C) n/ b) Y0 N% D8 B5 ^
  
, x+ s( Z0 H+ v2 S# U" c( [  ! B4 d7 q3 T  L( S5 L& \& K
  
8 [1 \# Z' D4 k( R* }  * ^  c8 l% B: V' z2 F# d9 J* `
  6 ]5 y9 b; J1 i7 J3 e6 v# n3 m
  
* o; l( I# B' `1 O8 Q! L 7 s3 F8 u; P/ U# d: l6 H
  9 C1 g7 |. n. B/ r
  
" m% J5 h7 L+ }1 R2 z8 C5 ]4 H  6 W- F( e1 d1 @7 }6 X' e" S8 z
  package lavasoft.springstu.anno;
& ]' M! g* p. p9 e" V  import org.springframework.context.ApplicationContext;
$ m3 ~3 c# _4 e  import org.springframework.context.support.ClassPathXmlApplicationContext;$ t$ r- }6 M8 p0 p
  /**5 b3 C( R% N  C* ]
  * 测试自动装配Bean
6 @" y. t2 q- j" j  *
4 h+ r9 p8 y4 J9 Q# b$ n- n# N  */. R# Y& s9 s8 v. f8 }
  public class Test1 {
# ~' z* {6 v. F  public static void main(String[] args) {3 g9 j2 q& y6 w, j
  ApplicationContext ctx = new ClassPathXmlApplicationContext("lavasoft/springstu/anno/cfg1.xml");
3 `6 `& ]/ t; G  Bar bar = (Bar) ctx.getBean("bar");
! m+ T* \3 B* L* s' Z: Q2 e' p  bar.f1();
. B+ a% v* @( [  }7 V& S. K7 b* z1 q' M
  }% H5 s, c+ r$ p1 p  o
  运行结果:7 o! x) b4 l: O( U2 ~- W( }
  aaaa( [" |# }/ o; J2 K
  Process finished with exit code 0
1 U' e9 e7 W0 ~  从上面的代码中看到,Spring的注解使得配置文件的逻辑很混乱,如果项目中有大量的类似注解,那维护起来就很困难了。. s% K6 m( S( C6 ~- t1 x9 d/ @
  建议不要使用!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 15:58 , Processed in 0.254804 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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