零配置-@Bean


@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。作用是,把方法的返回结果放入IOC容器中,并且起个bean的id名称

@Bean与@Component的区别?

@Component注解的作用是创建一个对象,放入IOC容器中。
@Bean注解并没有创建对象的能力,它只是获取某个方法的返回值,放入IOC容器中。

 

以下为@Bean注解的案例:

一、编写Bean类

CustomerDao接口:

package com.yiidian.dao;
/**
 * 
 * @author http://www.yiidian.com
 *
 */
public interface CustomerDao {
}

CustomerDaoImpl实现:

package com.yiidian.dao.impl;

import com.yiidian.dao.CustomerDao;

/**
 * @author http://www.yiidian.com
 * 
 */
public class CustomerDaoImpl implements CustomerDao {
}

SpringConfig启动类(重点在这里):

package com.yiidian.test;

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

import com.yiidian.dao.CustomerDao;
import com.yiidian.dao.impl.CustomerDaoImpl;

/**
 * @author http://www.yiidian.com
 *
 */
@Configuration
@ComponentScan(basePackages={"com.yiidian"}) 
public class SpringConfig {
	@Bean(name="customerDao") //获取getCustomerDao的返回对象,放入IOC容器中,并且起名为customerDao
	public CustomerDao getCustomerDao(){
		return new CustomerDaoImpl();
	}
}

注意:在这里@Bean的作用,获取getCustomerDao的返回对象,放入IOC容器中,并且起名为customerDao。

二、编写测试类

package com.yiidian.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.yiidian.dao.CustomerDao;
/**
 * 
 * @author http://www.yiidian.com
 *
 */
public class Demo1 {
	@Test
	public void test1(){
		ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
		CustomerDao customerDao = (CustomerDao)ac.getBean("customerDao");
		System.out.println(customerDao);
	}
}

三、运行结果

源码下载:http://pan.baidu.com/s/1hrHobUO