Spring-02 Java配置实现IOC

Java配置

  • Spring4推荐使用java配置实现IOC
  • Spring boot也推荐采用java配置实现IOC
  • 在实际项目中,一般采用注解配置业务bean,全局配置使用Java配置。

Java配置使用的注解

  • @Configuration:声明当前类为配置类,配置类等效于spring配置xml文件。
  • @Bean:声明在方法上,方法返回值为Bean。

 

示例代码

特点:dao和service层不再使用注解

dao的代码

package com.etc.dao;

import org.springframework.stereotype.Repository;

public class EntityDao {
	
	public String getData(){
		return "get data from database";
	}
}

  

service的代码

package com.etc.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.etc.dao.EntityDao;

public class EntityService {
	
	private EntityDao entityDao;
	
	public String getData(){
		return entityDao.getData();
	}

}

 

Java配置类的代码

package com.etc.config;

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

import com.etc.dao.EntityDao;
import com.etc.service.EntityService;


/** 声明当前类是一个配置类 ,在该类中定义bean*/
@Configuration
public class JavaConfig {
	
	/**获取dao的bean*/
	@Bean
	public EntityDao entityDao(){
		return new EntityDao();
	}
	
	/**获取service的bean*/
	// @Bean
	// public EntityService entityService(){
	// EntityService entityService=new EntityService();
	// entityService.setEntityDao(entityDao());
	// return entityService;
	// }
	
	/**获取serveice的bean时,通过方法参数注入bean*/
	@Bean
	public EntityService entityService(EntityDao entityDao){
		EntityService entityService=new EntityService();
		entityService.setEntityDao(entityDao);
		return entityService;
	}
	
}

  

测试类代码

package com.etc.test;

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

import com.etc.config.DiConfig;
import com.etc.config.JavaConfig;
import com.etc.service.EntityService;

public class TestClass {

	/**测试使用注解实现IOC*/
	public void test1() {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
				DiConfig.class);
		EntityService es = context.getBean(EntityService.class);
		System.out.println(es.getData());
		context.close();
	}
	
	/**测试使用Java配置实现IOC*/
	@Test
	public void test2(){
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
				JavaConfig.class);
		EntityService es = context.getBean(EntityService.class);
		System.out.println(es.getData());
	}

}

  

测试结果

get data from database

  

posted @ 2018-01-15 11:03  rask  阅读(237)  评论(0编辑  收藏  举报