a02-2装配bean-java代码装配(spring实战)

2018-08-07  本文已影响0人  brusion

本篇内容

一、基础配置

1、创建接口

public interface CompactDisc {
​
    void play();
}

2、创建实现类

@Component
public class SgtPepper implements CompactDisc {
    public void play() {
        System.out.println(" sgt-pepper play ... ... ");
    }
}
public class CDPlayer {
​
​
    private CompactDisc compactDisc;
​
    public CDPlayer(CompactDisc compactDisc) {
        this.compactDisc = compactDisc;
    }
​
​
    public void play() {
        compactDisc.play();
    }
​
    public void setCompactDisc(CompactDisc compactDisc) {
        this.compactDisc = compactDisc;
    }
​
    public CompactDisc getCompactDisc() {
        return compactDisc;
    }
}

3、创建配置文件

@Configuration
public class CDConfig {
    
}

二、在配置文件中添加获取Bean的方法

1、配置类修改

@Configuration
public class CDConfig {
​
    @Bean
    public CompactDisc sgtPepper() {
        return new SgtPepper();
    }
}

2、测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDConfig.class)
public class CDPlayerTest {
​
    @Autowired
    private CDConfig cdConfig;
​
    @Test
    public void getBean() {
        CompactDisc compactDisc = cdConfig.sgtPepper();
        compactDisc.play();
    }
}

3、修改bean的ID值

@Configuration
public class PlayConfig {
​
    @Bean(name = "longSgtPepper")
    public CompactDisc sgtPepper() {
        return new SgtPepper();
    }
}

注解说明:

三、引用创建Bean

1、修改配置文件

@Configuration
public class CDConfig {
​
    @Bean
    public CompactDisc sgtPepper() {
        return new SgtPepper();
    }
​
    @Bean
    public CDPlayer cdPlayer() {
        return new CDPlayer(sgtPepper());
    }
}

2、测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDConfig.class)
public class CDPlayerTest {
​
    @Autowired
    private CDConfig cdConfig;
​
    @Test
    public void getCDPlayer(){
        CDPlayer cdPlayer = cdConfig.cdPlayer();
        cdPlayer.play();
    }
}

说明:

四、验证通过Spring中@Bean注解返回的对象是单例

1、配置类修改

@Configuration
public class CDConfig {
​
    @Bean
    public CompactDisc sgtPepper() {
        return new SgtPepper();
    }
​
    @Bean
    public CDPlayer cdPlayer() {
        return new CDPlayer(sgtPepper());
    }
​
    @Bean
    public CDPlayer anotherPlayer() {
        return new CDPlayer(sgtPepper());
    }
}

2、测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDConfig.class)
public class CDPlayerTest {
​
    @Autowired
    private CDConfig cdConfig;
​
    @Test
    public void getBean() {
        CompactDisc compactDisc = cdConfig.sgtPepper();
        compactDisc.play();
    }
​
    @Test
    public void equalsBean() {
        CompactDisc compactDisc = cdConfig.sgtPepper();
        CDPlayer cdPlayer = cdConfig.anotherPlayer();
        CompactDisc compactDisc1 = cdPlayer.getCompactDisc();
        if (compactDisc.equals(compactDisc1)) {
            System.out.println("对象相等");
        }
    }
}

五、采用构造器方式注入bean

1、配置类

@Configuration
public class CDConfig {
    
    @Bean
    public CDPlayer cdPlayer(CompactDisc compactDisc) {
        return new CDPlayer(compactDisc);
    }
​
}

说明:

六、采用setter方式

1、配置类

@Configuration
public class CDConfig {
    
    @Bean
    public CDPlayer anotherPlayer(CompactDisc compactDisc) {
        CDPlayer cdPlayer = new CDPlayer(compactDisc);
        cdPlayer.setCompactDisc(compactDisc);
        return cdPlayer;
    }
}

2、测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDConfig.class)
public class CDPlayerTest {
​
    @Autowired
    private CDConfig cdConfig;
​
    @Test
    public void equalsCDPlayer() {
        CDPlayer cdPlayer = cdConfig.cdPlayer(cdConfig.sgtPepper());
        CompactDisc compactDisc = cdPlayer.getCompactDisc();
        cdPlayer.play();
​
        CDPlayer cdPlayer1 = cdConfig.cdPlayer();
        CompactDisc compactDisc1 = cdPlayer1.getCompactDisc();
        cdPlayer1.play();
        if (compactDisc.equals(compactDisc1)) {
            System.out.println("对象相等");
        }
    }
​
}

代码地址:


https://github.com/brusion/brusion-code/tree/master/demo-java/03%20-%20demo%20-%20spring/spring-demo-study/01-di


上一篇下一篇

猜你喜欢

热点阅读