首页 > 代码库 > Spring学习系列(二) 自动化装配Bean

Spring学习系列(二) 自动化装配Bean

一、Spring装配-自动化装配

@Component和@ComponentScan

通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组件扫描默认是不启动的,需要显式的配置Spring,从而命令Spring去寻找带有(@Component)注解的类,并为其创建bean。

1、定义接口

package com.seven.springTest.service;

public interface HelloWorldApi {
    public void sayHello();
}

2、定义接口的实现类

package com.seven.springTest.service.impl;

import org.springframework.stereotype.Component;

import com.seven.springTest.service.HelloWorldApi;

@Component    //通过注解指定该类组件类,告知spring要为它创建Bean
public class PersonHelloWorld implements HelloWorldApi {

    @Override
    public void sayHello() {
        System.out.println("Hello World,This Is Person!");
    }
}

3、前面说过了,spring并不能自动启用组件扫描,需要进行显式的配置,这里通过java类来进行显式的配置,定义java配置类HelloWorldConfig,在配置类中我们没有显式的声明任何bean,只不过是使用了@CompontentScan注解来启用组件扫描

package com.seven.springTest;

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

@Configuration
@ComponentScan   // 启用组件扫描
public class HelloWorldConfig {

}

现在所有的工作已经完成,我们来测试下

package com.seven.springTest.main;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.seven.springTest.HelloWorldConfig;
import com.seven.springTest.service.HelloWorldApi;

public class HelloWorldTest {

    public static void main(String[] args) {
        //1. 声明Spring上下文,采用java配置类
        ApplicationContext ac = new AnnotationConfigApplicationContext(HelloWorldConfig.class);
        //2. 声明Spring应用上下文,采用xml配置
        //ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        //通过Spring上下文获取Bean,在这里Spring通过自动扫描发现了PersonHelloWorld的实现,并自动创建bean。
        HelloWorldApi hwapi = ac.getBean(HelloWorldApi.class);
        //通过sayHello()的输入内容可以看到,hwapi为PersonHelloWorld的实例
        hwapi.sayHello();
    }
}

 

Spring学习系列(二) 自动化装配Bean