1. 程式人生 > >spring自動裝配

spring自動裝配

system test .org byname color public save cut 一個

1.

自動裝配: byName或byType

2. spring.xml中設置全局是byName自動裝配

<?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:p="http://www.springframework.org/schema/p"
    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" default-autowire="byName
"> <!-- ###############自動裝配############### --> <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean> <bean id="userService" class="cn.itcast.d_auto.UserService"></bean> <!-- 如果根據類型自動裝配: 必須確保IOC容器中只有一個該類型的對象 --> <bean id="userAction" class="cn.itcast.d_auto.UserAction"></bean> <!-- 報錯: 因為上面已經有一個該類型的對象,且使用了根據類型自動裝配 <bean id="userService_test" class="cn.itcast.d_auto.UserService" autowire="byType"></bean> --> </beans>

  3.測試類

public class App {

	// 創建容器對象
	private ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/d_auto/bean.xml");
	@Test
	public void testExecuteAction() {
		// 從容器中獲取Action
		UserAction userAction = (UserAction) ac.getBean("userAction");
		userAction.execute();
	}
}

  4. 控制層

public class UserAction {

	private UserService userService;
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public String execute() {
		userService.save();
		return null;
	}
}

  5. 業務邏輯

public class UserService {
	private UserDao userDao; // = new UserDao();
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public void save() {
		userDao.save();
	}
}

  6.持久層

public class UserDao {

	public void save() {
		System.out.println("DB:保存用戶...");
	}
}

  

spring自動裝配