一、在XML中进行显式配置

二、在Java中进行显式配置

@Configuration
public class MyConfig {
    @Bean(name = "leoBook")
    public Book myBook() {
        return new Book();
    }
}

三、隐式的bean发现机制和自动装配

package com.leo;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/** * @ClassName: MyConfig * @Author: Leo * @Description: bean装配的配置类 * @Date: 7/15/2019 2:48 PM */
@Configuration
@ComponentScan(basePackageClasses = {Main.class, StringOrder.class})
//@ComponentScan(basePackages = {"com.leo", "com.zgh"})
public class MyConfig {
    public void BookConfig() {
    }
}

  • 组件扫描:Spring会自动发现应用上下文中所创建的bean
package com.leo;

import org.springframework.stereotype.Component;

/** * @ClassName: Book * @Author: Leo * @Description: 使用Component使该类作为一个组件 * @Date: 7/15/2019 2:42 PM */
@Component("book")
public class Book {
    private String name;
    private String price;
}

  • 自动装配:Spring会自动满足bean之间的依赖
package com.leo;

import org.junit.Test;
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 = MyConfig.class)
public class MainTest {

    @Autowired
    @Test
    public void buyBook(Book book) {
        System.out.println("****" + book);
    }

}