阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

spring常用的三种依赖注入方式

33次阅读
没有评论

共计 1387 个字符,预计需要花费 4 分钟才能阅读完成。

导读 平常的 java 开发中,程序员在某个类中需要依赖其它类的方法,则通常是 new 一个依赖类再调用类实例的方法,这种开发存在的问题是 new 的类实例不好统一管理,spring 提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过 spring 容器帮我们 new 指定实例并且将实例注入到需要该对象的类中。

依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们 new 一个实例,这个实例的控制权是我们程序员,而控制反转是指 new 实例工作不由我们程序员来做而是交给 spring 容器来做。Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法参数注入,接口注入。

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

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

@Autowired
构造方法、方法、接口 

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

构造器注入

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

public class Test1 {  
    private MessageInterface message;  
    @Autowired // 构造器注入  
    private Test1(MessageInterface message) {this.message = message;} 
    // 省略 getter 和 setter  
  }
接口注入

通过将 @Autowired 注解放在构造器上来完成接口注入。

public class Test2 {  
    @Autowired // 接口注入  
    private MessageInterface messageInterface;  
    // 省略 getter 和 setter  
}
方法参数注入

通过将 @Autowired 注解放在方法上来完成方法参数注入。

public class Test3 {  
    private MessageInterface message;  
 
    @Autowired //setter 方法注入  
    public void setMessage(MessageInterface message) {this.message = message;}  
    public String getMessage() {return message;}  
}
 public class Test4 {  
    private MessageInterface message;  //
    private List list;  
    @Autowired(required = true) // 任意一个或多个参数方法注入  
    private void initMessage(MessageInterface message, ArrayList list) {  
        this.message = message;  
        this.list = list;  
    }  
    // 省略 getter 和 setter  
} 

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1387字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中