----更加簡化的版本
UserAction.java
import javax.annotation.Resource;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;//@Component("userAction") // 加入IOC容器//@Component@Controller // 控制層的組件
public class UserAction {@Resourceprivate UserService userService;public String execute() {userService.save();return null;}
}
import javax.annotation.Resource;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;//@Component("userService") // userService加入ioc容器//@Component@Service // 表示業務邏輯層的組件
public class UserService {// @Resource // 根據類型查找 【在容器中要確保該類型只有一個變量】@Resource(name = "userDao") // 根據名稱查找private UserDao userDao; // 去容器中招UserDao類型的變量,找到后就賦值public void save() {userDao.save();}
}
UserDao.java
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;// 把當前對象加入ioc容器
//@Component("userDao") // 相當于bean.xml 【<bean id=userDao class=".." />】//@Component // 加入ioc容器的UserDao對象的引用名稱, 默認與類名一樣, 且第一個字母小寫@Repository // 在持久層可以選擇用這個注解
public class UserDao {public UserDao(){System.out.println("UserDao.UserDao()");}public UserDao(int id){System.out.println("UserDao.UserDao(int id)" + id);}public void save() {System.out.println("zengmg:保存用戶!!!");}
}
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 開啟注解掃描 --><context:component-scan base-package="zengmg.e_anno2"></context:component-scan><bean id="userDao" class="zengmg.UserDao" scope="prototype"></bean></beans>
測試代碼:
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {// 創建容器對象private ApplicationContext ac = new ClassPathXmlApplicationContext("zengmg/e_anno2/bean.xml");@Testpublic void testExecuteAction() {// 從容器中獲取ActionUserAction userAction = (UserAction) ac.getBean("userAction");userAction.execute();}
}