加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

LINUX教程:Spring自动化装配bean

发布时间:2020-12-13 17:30:16 所属栏目:Linux 来源:网络整理
导读:《LINUX教程:Spring自动化装配bean》要点: 本文介绍了LINUX教程:Spring自动化装配bean,希望对您有用。如果有疑问,可以联系我们。 1. 场景 用CD(Compact disc)和CD播放器(CDPlayer)阐述DI(依赖注入).如果不将CD插入(注入)到CDPlayer中,那么CDPlayer其实

《LINUX教程:Spring自动化装配bean》要点:
本文介绍了LINUX教程:Spring自动化装配bean,希望对您有用。如果有疑问,可以联系我们。

1. 场景

用CD(Compact disc)和CD播放器(CDPlayer)阐述DI(依赖注入).如果不将CD插入(注入)到CDPlayer中,那么CDPlayer其实没有太大的用处,所以,可以这样说:CDPlayer依赖于CD能力完成它的使命.

2. 架构图示

3. 代码

接口: CompactDisc.java

package soundsystem;
public interface CompactDisc {
  void play();
}

接口: MediaPlayer.java

package soundsystem;
public interface MediaPlayer {
  void play();
}

SgtPeppers.java

package soundsystem;
import org.springframework.stereotype.Component;
@Component
public class SgtPeppers implements CompactDisc {
  private String title = "Sgt. Pepper's Lonely Hearts Club Band";  
  private String artist = "The Beatles";
  @Override
  public void play() {
    System.out.println("Playing " + title + " by " + artist);
  }
  
}

:SgtPeppers类上使用了@Component注解.这个简单的注解注解该类会作为组件类,并告知Spring要为这个类创建bean

CDPlayer.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CDPlayer implements MediaPlayer {
  private CompactDisc cd;
  @Autowired
  public CDPlayer(CompactDisc cd) {
    this.cd = cd;
  }
  @Override
  public void play() {
    cd.play();
  }
}?

不过,组件扫描默认是不启用的,我们还需显式配置一下Spring,从而命令它去寻找带有@Component表明的类,并未其创建bean.下例中使用了@ComponentScan表明,这个表明能够在Spring中启用组件扫描.如没有其他配置,@ComponentScan默认会扫描与配置类相同的包:soundsystem

CDPlayerConfig.java

package soundsystem;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
public class CDPlayerConfig { 
}?

测试CDPlayerTest.java

package soundsystem;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {
  @Autowired
  private MediaPlayer player;
  
  @Autowired
  private CompactDisc cd;
  
  @Test
  public void cdShouldNotBeNull() {
    assertNotNull(cd);
  }
  @Test
  public void play() {
    player.play();
  }
}

自动装配就是让Spring自动满足bean依赖的一种办法,在满足依赖的过程中,会在Spring应用的上下文中寻找匹配某个bean需求的其他bean.为了声明要进行自动装配,我们借助Spring的@Autowired注解.

上述代码中,在构造器中添加了@Autowised注解,这注解当Spring创建CDPlayer bean的时候,会通过这个构造器来进行实例化,并传入一个可设置为CompactDisc类的bean,在上面的代码中,SgtPeppers被声明为组件,并实现了CompactDisc接口.因此,在实际运行中会把SgtPeppers作为实例化类.

本文永远更新链接地址

编程之家PHP培训学院每天发布《LINUX教程:Spring自动化装配bean》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读