SpringMVC:学习笔记(11)——依赖注入与@Autowired

使用@Autowired

  从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解。这个注解允许Spring解析并将相关bean注入到bean中。

使用@Autowired在属性上

  这个注解可以直接使用在属性上,不再需要为属性设置getter/setter访问器。

  1. @Component("fooFormatter")
  2. public class FooFormatter {
  3.  
  4. public String format() {
  5. return "foo";
  6. }
  7. }

  在下面的示例中,Spring在创建FooService时查找并注入fooFormatter

  1. @Component
  2. public class FooService {
  3.  
  4. @Autowired
  5. private FooFormatter fooFormatter;
  6.  
  7. }

使用@Autowired在Setters上

  @Autowired注解可用于setter方法。在下面的示例中,当在setter方法上使用注释时,在创建FooService时使用FooFormatter实例调用setter方法:

  1. public class FooService {
  2.  
  3. private FooFormatter fooFormatter;
  4.  
  5. @Autowired
  6. public void setFooFormatter(FooFormatter fooFormatter) {
  7. this.fooFormatter = fooFormatter;
  8. }
  9. }

  这个例子与上一段代码效果是一样的,但是需要额外写一个访问器。

使用@Autowired 在构造方法上

  @Autowired注解也可以用在构造函数上。在下面的示例中,当在构造函数上使用注释时,在创建FooService时,会将FooFormatter的实例作为参数注入构造函数:

  1. public class FooService {
  2.  
  3. private FooFormatter fooFormatter;
  4.  
  5. @Autowired
  6. public FooService(FooFormatter fooFormatter) {
  7. this.fooFormatter = fooFormatter;
  8. }
  9. }  

补充:在构造方法中使用@Autowired,我们可以实现在静态方法中使用由容器管理的Bean

  1. @Component
  2. public class Boo {
  3.  
  4. private static Foo foo;
  5.  
  6. @Autowired
  7. private Foo foo2;
  8.  
  9. public static void test() {
  10. foo.doStuff();
  11. }
  12. }

使用@Qualifier取消歧义

  定义Bean时,我们可以给Bean起个名字,如下为barFormatter

  1. @Component("barFormatter")
  2. public class BarFormatter implements Formatter {
  3.  
  4. public String format() {
  5. return "bar";
  6. }
  7. }

  当我们注入时,可以使用@Qualifier来指定使用某个名称的Bean,如下:

  1. public class FooService {
  2.  
  3. @Autowired
  4. @Qualifier("fooFormatter")
  5. private Formatter formatter;
  6.  
  7. }

参考链接:

SpringMVC:学习笔记(11)——依赖注入与@Autowired的更多相关文章

  1. springMVC学习(注解实现依赖注入)

    原文:http://blog.csdn.net/mockingbirds/article/details/45399691 上一篇博客,学习了spring的依赖注入,即利用spring容器来为类中的属 ...

  2. AngularJS学习笔记之依赖注入

    最近在看AngularJS权威指南,由于各种各样的原因(主要是因为我没有money,好讨厌的有木有......),于是我选择了网上下载电子版的(因为它不要钱,哈哈...),字体也蛮清晰的,总体效果还不 ...

  3. Spring.NET学习笔记6——依赖注入(应用篇)

    1. 谈到高级语言编程,我们就会联想到设计模式:谈到设计模式,我们就会说道怎么样解耦合.而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny I ...

  4. Spring学习笔记1—依赖注入(构造器注入、set注入和注解注入)

    什么是依赖注入 在以前的java开发中,某个类中需要依赖其它类的方法时,通常是new一个依赖类再调用类实例的方法,这种方法耦合度太高并且不容易测试,spring提出了依赖注入的思想,即依赖类不由程序员 ...

  5. Unity学习笔记(4):依赖注入

    Unity具体实现依赖注入包含构造函数注入.属性注入.方法注入,所谓注入相当赋值,下面一个一个来介绍 1:构造函数注入 1.1当类有多个构造函数时,可以通过InjectionConstructor特性 ...

  6. angular2 学习笔记 ( DI 依赖注入 )

    refer : http://blog.thoughtram.io/angular/2016/09/15/angular-2-final-is-out.html ( search Dependency ...

  7. Angular4.0从入门到实战打造在线竞拍网站学习笔记之三--依赖注入

    Angular4.0基础知识之组件 Angular4.0基础知识之路由 依赖注入(Dependency Injection) 正常情况下,我们写的代码应该是这样子的: let product = ne ...

  8. Asp.net core 学习笔记 ( DI 依赖注入 )

    比起 Angular 的依赖注入, core 的相对简单许多, 容易明白 所有 provider 都在 startup 里配置. public void ConfigureServices(IServ ...

  9. [学习笔记]Spring依赖注入

    依赖: 典型的企业应用程序不可能由单个对象(在spring中,也可称之bean)组成,再简单的应用也是由几个对象相互配合工作的,这一章主要介绍bean的定义以及bean之间的相互协作. 依赖注入: s ...

随机推荐

  1. C# Dictionary使用

    Dictionary<string, int> illegParking = new Dictionary<string, int>(); 键:inData.LOTID 值:i ...

  2. printf的使用和test的使用

    1.printf的使用 printf的转义序列 序列 说明 \a 警告字符,通常为ASCII的BEL字符 \b 后退 \c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字 ...

  3. BZOJ 4571: [Scoi2016]美味

    二次联通门 : BZOJ 4571: [Scoi2016]美味 /* BZOJ 4571: [Scoi2016]美味 dalao们都在说这题如果没有加法balabala就可以用可持久化trie解决了 ...

  4. “猜你喜欢”的背后揭秘--10分钟教你用Python打造推荐系统

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 话说,最近的瓜实在有点多,从我科校友李雨桐怒锤某男.陈羽凡吸毒被捕.蒋劲夫家暴的三连瓜,到不知知网翟博士,再到邓紫棋解约蜂鸟.王思聪花千芳隔 ...

  5. 【微信小程序】如何获取用户绑定手机号

    用户调用wx.login()方法,获取登录用户凭证code wx.login({ success: function(res) { console.log('loginCode', res.code) ...

  6. Codeforces 1137F Matches Are Not a Child's Play [LCT]

    Codeforces 很好,通过这题对LCT的理解又深了一层. 思路 (有人说这是套路题,然而我没有见过/kk) 首先发现,删点可以从根那里往下删,非常难受,所以把权值最大的点提为根. 然后考虑\(x ...

  7. mysql 统计查询出来的数目

    select count(*) as dd from users;

  8. Java 基础:Queue

    下面几个关于Java里queue的说法哪些是正确的()? 正确答案: A C A.LinkedBlockingQueue是一个可选有界队列,不允许null值 B.PriorityQueue,Linke ...

  9. bootstrap select 多选的用法,取值和赋值(取消默认选择第一个的对勾)

    h5自带的select标签可以实现按住ctrl键多选的功能,但是样式及其难看. bootstrap select是很好用的前端插件 ​ 首先引入bootstrap和bootstrap-select的c ...

  10. OpenFOAM-圆柱绕流

    原版视频下载地址:https://yunpan.cn/c64yrdt9J5LmQ  访问密码 0128 首先进行建模操作,任何建模软件均可,本教程采用ICEM直接建模,模型尺寸如下: 建成的模型如下: ...