1. 程式人生 > >JavaEE--spring-基於註解的IOC注入配置

JavaEE--spring-基於註解的IOC注入配置

下面我來介紹一下另一種使用在Spring框架下的IOC注入方式:

基於註解的IOC.它是通過配置註解來部分或全部取代xml配置檔案.作用與xml是一樣的.

一.IOC註解演示

1.建立專案.引入Jar包

2.建立配置檔案 bean.xml

引入約束.

<?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"> </beans>

3.在spring配置檔案中開啟對註解IOC的支援.

在bean.xml中加入

<!-- 告知spring在建立容器時掃描指定位置的包下的類建立物件並存入容器 -->

<context:component-scan base-package="cn.asiainfo"></context:component-scan>

4.建立業務層介面和實現類.

public interface orderService {
	public void saveOrder();

}

@Component(value="orderService")//相當於bean標籤確定實現類與介面關係.
public class orderServiceImpl implements OrderService {
	@Resource(name="orderDao")//直接按照bean的id注入
	private OrderDao orderDao;
        @Override
	public void saveOrder() {
		System.out.println("業務層儲存訂單");
		orderDao.saveOrder();
	}
}

5.建立持久層介面和實現類

public interface OrderDao {
	public void saveOrder();

}

@Component(value = "orderDao")
public class OrderDaoImpl implements OrderDao {
	@Override
	public void saveOrder() {
		System.out.println("持久層儲存訂單");
	}

}

6.建立測試類

public class Test01 {
	@Autowired
	private OrderService orderService;
	@Test
	public void test() {
		//獲取容器
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		//獲得物件
		orderService = (OrderService) ac.getBean("orderService");
		orderService.saveOrder();
	}

}

7.測試結果:


8.結果分析:

通過配置檔案自動建立獲取容器.然後從容器中通過自動注入拿到service物件.呼叫dao層.dao層同樣採用自動注入物件.呼叫方法.

二.IOC常用相關注解

1.用於建立物件的. 等同於xml中的<bean id="" class="">

@Component(value="bean的id")

 @Controller(value="可以不寫") //表現層註解

@Service(value="可以不寫") //業務層註解

@Repository(value="可以不寫") //持久層註解

2.用於注入資料. 等同於<property name="" ref="" >/<property name="" name="" >

@Autowired  //自動按型別注入

@Qualifier(id="")  //除了按型別注入,附加按id注入.更加詳細

@Resource(id="")  //直接按照id注入

3.改變作用範圍的 等同於<bean id="" scope="">

@Scope(value="單例/多例/...")

喜歡這篇文章或對你有幫助請點贊關注哦~~