有以下三种配置
在xml中配置
在java中配置
bean自动装配

自动装配

这里以转载CD为例子

首先需要建立CD概念

即,定义一个cd接口

只需要实现添加两个注解,

package com.ming;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;/** * 定义cd接口 * @author ming */@Configuration@ComponentScanpublic interface CompactDisc {    /**     * 规定方法为play     */    void play();}
package com.ming;import org.springframework.stereotype.Component;/** * * @author ming */// 启用组件扫描@Componentclass SgtPeppers implements CompactDisc {    private String title = "标题";    private String artist = "内容";    /**     * 规定方法为play     */    @Override    public void play() {        System.out.println(this.artist + this.title);    }}
package com.ming;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import static org.junit.Assert.*;public class CompactDiscTest {    private ApplicationContext applicationContext = null;    @Before    public void setUp() throws Exception {        applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");    }    @After    public void tearDown() throws Exception {    }    @Test    public void play() {        CompactDisc compactDisc = applicationContext.getBean(CompactDisc.class);        assertNotNull(compactDisc);    }}

扫描的时候,会直接按照该类所在的包,作为基础包,进行扫描

对依赖的实现自动装配

添加注解以后,初始化bean以后,会尽可能的满足bean的依赖

目录如下

package com.ming;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;/** * * @author ming */@Componentpublic class CDPlay implements MediaPlayer {    CompactDisc compactDisc = null;    @Autowired    public CDPlay(CompactDisc compactDisc){        this.compactDisc = compactDisc;    }    /**     * 规定方法为play     */    @Override    public void play() {        compactDisc.play();    }}
package com.ming;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;/** * 定义cd接口 * @author ming */@Configuration@ComponentScanpublic interface CompactDisc {    /**     * 规定方法为play     */    void play();}
package com.ming;import org.springframework.context.annotation.ComponentScan;/** * @author ming */@ComponentScanpublic interface MediaPlayer {    /**     * 规定方法为play     */    public void play();}
package com.ming;import org.springframework.stereotype.Component;/** * * @author ming */// 启用组件扫描@Componentclass SgtPeppers implements CompactDisc {    private String title = "标题";    private String artist = "内容";    /**     * 规定方法为play     */    @Override    public void play() {        System.out.println(this.artist + this.title);    }}
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <context:component-scan base-package="com.ming"/></beans>
package com.ming;import org.junit.After;import org.junit.Before;import org.junit.Rule;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import static org.junit.Assert.*;public class CompactDiscTest {    private ApplicationContext applicationContext = null;    @Before    public void setUp() throws Exception {        applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");    }    @After    public void tearDown() throws Exception {    }    @Test    public void play() {        MediaPlayer mediaPlayer = (MediaPlayer) applicationContext.getBean(MediaPlayer.class);        mediaPlayer.play();        assertNotNull(mediaPlayer);    }}

运行结果

在这里,在装配的时候,尽量满足配置规则进行装配

Java代码装配bean

package com.ming;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * * @author ming */@Configuration  // 注解表明这是一个配置类public class CDPlayerConfig {    @Bean    public CompactDisc sgtPeppers(){        // 此处进行装配        return new SgtPeppers();    }    /**     * 注入装配     * @return     */    @Bean    public CDPlay cdPlay(){        return new CDPlay(this.sgtPeppers());    }}