一.目前使用最广泛的 @Autowired:自动装配

基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器、接口、方法注入,使用方式如下:

@Autowired
构造方法、方法、接口
@Autowired默认是根据参数类型进行自动装配,且必须有一个Bean候选者注入默认required=true,如果允许出现0个Bean候选者需要设置属性“required=false”,“required”属性含义和@Required一样,只是@Required只适用于基于XML配置的setter注入方式,只能打在setting方法上。

1)、构造器注入:通过将@Autowired注解放在构造器上来完成构造器注入,默认构造器参数通过类型自动装配,如下所示:

 public class Test1 {
private MessageInterface message;
@Autowired //构造器注入
private Test1(MessageInterface message) {
this.message = message;
}
//省略getter和setter
}
 
1
 public class Test1 {  
2
    private MessageInterface message;  
3
    @Autowired //构造器注入  
4
    private Test1(MessageInterface message) {  
5
        this.message = message;  
6
    }
7
    //省略getter和setter  
8
  }
(2)、接口注入:通过将@Autowired注解放在构造器上来完成接口注入。
 public class Test2 {
@Autowired //接口注入
private MessageInterface messageInterface;
//省略getter和setter
}
 
1
 public class Test2 {  
2
    @Autowired //接口注入  
3
    private MessageInterface messageInterface;  
4
    //省略getter和setter  
5
} 
(3)、方法参数注入:通过将@Autowired注解放在方法上来完成方法参数注入。

 
public class Test3 {
private MessageInterface message; @Autowired //setter方法注入
public void setMessage(MessageInterface message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
11
 
1
public class Test3 {  
2
    private MessageInterface message;  
3
 
4
    @Autowired //setter方法注入  
5
    public void setMessage(MessageInterface message) {  
6
        this.message = message;  
7
    }  
8
    public String getMessage() {  
9
        return message;  
10
    }  
11
}

public class Test4 {
private MessageInterface message; //
private List<String> list;
@Autowired(required = true) //任意一个或多个参数方法注入
private void initMessage(MessageInterface message, ArrayList<String> list) {
this.message = message;
this.list = list;
}
//省略getter和setter
}
10
 
1
public class Test4 {  
2
    private MessageInterface message; //
3
    private List<String> list;  
4
    @Autowired(required = true) //任意一个或多个参数方法注入  
5
    private void initMessage(MessageInterface message, ArrayList<String> list) {  
6
        this.message = message;  
7
        this.list = list;  
8
    }  
9
    //省略getter和setter  
10
} 

[心得笔记]spring常用的三种依赖注入方式的更多相关文章

  1. 深入浅出spring IOC中三种依赖注入方式

    深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...

  2. 【SSH系列】深入浅出spring IOC中三种依赖注入方式

    spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控 ...

  3. spring IOC中三种依赖注入方式

    Spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则,用来消减计算机程序之间的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入 ...

  4. 转:深入浅出spring IOC中四种依赖注入方式

    转:https://blog.csdn.net/u010800201/article/details/72674420 深入浅出spring IOC中四种依赖注入方式 PS:前三种是我转载的,第四种是 ...

  5. Spring学习(十八)Bean 的三种依赖注入方式介绍

    依赖注入:让调用类对某一接口实现类的依赖关系由第三方注入,以移除调用类对某一接口实现类的依赖.接下来将详细的向大家介绍Spring容器支持的三种依赖注入的方式以及具体配置方法:•    属性注入方法• ...

  6. spring IOC中四种依赖注入方式

    在spring ioc中有三种依赖注入,分别是:https://blog.csdn.net/u010800201/article/details/72674420 a.接口注入:b.setter方法注 ...

  7. Spring IOC(三)依赖注入

    本系列目录: Spring IOC(一)概览 Spring IOC(二)容器初始化 Spring IOC(三)依赖注入 Spring IOC(四)总结 目录 1.AbstractBeanFactory ...

  8. spring四种依赖注入方式(转)

    spring四种依赖注入方式!! 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提 ...

  9. ASP.NET Core应用的7种依赖注入方式

    ASP.NET Core框架中的很多核心对象都是通过依赖注入方式提供的,如用来对应用进行初始化的Startup对象.中间件对象,以及ASP.NET Core MVC应用中的Controller对象和V ...

随机推荐

  1. strcpy和memcpy的区别-(转自stone Jin)

    strcpy和memcpy都是标准C库函数,它们有下面的特点.strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函 ...

  2. oracle实现通过logminer实现日志抓取分析

    场景:现场库到前置库. 思考:使用触发器? 1.侵入性解决方案 2.需要时各种配置,不需要时又是各种配置 Change Data Capture:捕捉变化的数据,通过日志监测并捕获数据库的变动(包括数 ...

  3. 书列荐书 |《黑天鹅&#183;如何应对不可预知的未来》【美】纳西姆 尼古拉斯 塔勒布 著

    你不知道的事比你知道的事更有意义,因为生活中发生了许多微小的事情,尽管出现的概率非常小,但是却以某一种巨大的力量影响我们的生活.但是由于思维习惯的问题,导致我们看问题的方式使得我们不能很快地把握事物的 ...

  4. TensorFlow分布式详解

    每次 TensorFlow 运算都被描述成计算图的形式,允许结构和运算操作配置所具备的自由度能够被分配到各个分布式节点上.计算图可以分成多个子图,分配给服务器集群中的不同节点. 强烈推荐读者阅读论文& ...

  5. 重新整理 .net core 实践篇—————日志系统之作用域[十七]

    前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们 ...

  6. JUC 并发编程--02,生产者和消费者 synchronized的写法 , juc的写法. Condition的用法

    synchronized的写法 class PCdemo{ public static void main(String[] args) { //多个线程操作同一资源 Data data = new ...

  7. 像Swing这种已经不太用的技术,大学还在教,到底要不要学?

    一直以来,写日常问题.前沿技术和架构思考类的文章比较多,今天为什么突然来说说Swing这个陈年老技术呢? 因为在CSDN上看到了这样的一篇文章: 可以看到作者对于学Swing还是挺愤怒的,不过确实Sw ...

  8. Redis事务操作

    Redis事务操作 Redis事务本质: ​ 一组命令的集合 , 一个事务中的所有命令都会被序列化 , 在事务执行过程中 , 会按照顺序执行 一次性 : 事务之间的事情,会一次性执行,而不是立刻执行 ...

  9. 「题解」HDU-4015 Mario and Mushrooms

    本文将同步发布于: 洛谷博客: csdn: 博客园: 简书: 题目 题目链接:HDU-4015 Mario and Mushrooms.Vjudge HDU-4015. 题意简述 马里奥初始只有 \( ...

  10. RabbitMQ由浅入深入门全总结(一)

    写在最前面 距离上一次发文章已经很久了,其实这段时间一直也没有停笔,只不过在忙着找工作还有学校结课的事情,重新弄了一下博客,后面也会陆陆续续会把文章最近更新出来~ 这篇文章有点长,就分了两篇Q PS: ...