1. 程式人生 > >Spring 使用註解的方式實現IOC和DI(控制反轉和依賴注入)

Spring 使用註解的方式實現IOC和DI(控制反轉和依賴注入)

Spring 使用註解的方式實現IOC和DI

註解的方式實現IOC&DI 
   1、IOC操作
      1)@Component  :用於實現ioc控制反轉,屬性value用於實現物件id定義
      2)@Scope    :用於實現單例,多例,request,session等的配置
      
      3)@Controller  : 專門用於controller層的註解,實現控制反轉,屬性value
      4)@Service  : 專門用於service層的註解,實現控制反轉,屬性value
      5)@Repository  : 專門用於持久層的註解,實現控制反轉,屬性value
      
    2、DI操作
      1)@Resource(name="userService")--實現依賴注入
                        先按照name加type的方式檢索;其次缺失name或者確實type只按照一項進行檢索;其次name和type都省略,那麼預設還是按照name檢索
                        
      2)@Autowired---自動裝配,此註解實現的自動裝配是按照類實現注入,如果出現同名的類,那麼此註解方式就不能識別是哪個類實現注入,此時
      會出現異常;如果為了避免出現異常,可以採用@Qualifier(value="es")(熟悉)實現輔助,即Qualifier可以指明物件id

下面是演示程式碼:

專案結構如下:


需要的jar包:


1、UserAction.java  action層

package cn.sz.action;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import cn.sz.service.IUserService;

@Controller
@Scope(value = "prototype")
public class UserAction {
	@Resource(name = "userServiceImpl")
	private IUserService userServiceImpl;

	public void save() {

	}
}

2、IUserDAO.java 持久層介面

package cn.sz.dao;

public interface IUserDAO {
	// 新增方法
	public void save();
}

3、UserDAOImpl.java 持久層介面實現類

package cn.sz.dao.impl;

import org.springframework.stereotype.Repository;

import cn.sz.dao.IUserDAO;

@Repository(value = "userDAOImpl")
public class UserDAOImpl implements IUserDAO {

	@Override
	public void save() {

	}

}

4、IUserService.java 服務層介面

package cn.sz.service;

public interface IUserService {
	// 新增方法
	public void save();
}

5、UserServiceImpl.java 服務層介面實現類

package cn.sz.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import cn.sz.dao.IUserDAO;
import cn.sz.dao.impl.UserDAOImpl;
import cn.sz.service.IUserService;

@Service(value = "userServiceImpl")
public class UserServiceImpl implements IUserService {
	@Resource(name = "userDAOImpl", type = UserDAOImpl.class)
	private IUserDAO userDAOImpl;

	@Override
	public void save() {

	}

}

6、applicationContext.xml Spring主配置檔案(進行註解支援配置和註解掃描)

<?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">
	<!-- 註解支援 -->
	<context:annotation-config></context:annotation-config>
	<!-- 掃描:當前包中的類和子包中的類 -->
	<context:component-scan base-package="cn.sz"></context:component-scan>
</beans>