一:导入Spring时遇到的org/apache/commons/logging/LogFactory的问题
原因是Myeclipse里缺少commons-logging.jar 这个包,
CSDN上的下载地址:http://download.csdn.net/detail/ruantao1989/4666059
二:解压spring时,rar报错:“路径和文件名总长度不能超过260字符”
我试了好几次,这个要先把压缩包里边的 根文件夹改名,再解压出来就行了
就是:打开压缩包,看到rar里第一个文件夹改名成“1”,再解压出来就行了
三:从serviceTest开始分析Spring执行过程
总共需要这么几个文件:
UserService.java :外界执行程序的统一接口
UserServiceTest.java :此接口的测试
IUserDAO.java :方法接口
UserDAOImpl.java :被代理的、具体实现
User.java :就是个VO
springBeans.xml :这个是Spring动态代理的xml配置
整个结构和DAO差不多,我前一篇博文分析得很细了,这就说说不一样的理解:
1.先看test的执行顺序
@Test
public void testAdd() throws Exception {
//ApplicationContext代替beanFactory
ApplicationContext ctx = new ClassPathXmlApplicationContext("springBeans.xml");
//相当于从代理类得到具体实例,由xml决定怎么选择类实例化
UserService service = (UserService)ctx.getBean("userService01");
User u = new User();//手动组装User实例 u
u.setUsername("张三");
u.setPassword("123456");
service.add(u);//把组装好的u传给xml实例化的service
}
2.springBeans.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 相当于调用了无参构造,实例化了u1对象-->
<bean id="u1" class="com.rt.springdemo.dao.impl.UserDAOImpl"></bean>
<bean id="userService01" class="com.rt.springdemo.service.UserService">
<!-- property这句就相当于调用 set'UserDao'(u1)-->
<property name="userDAO" ref="u1" />
</bean>
</beans>
3.server
package com.rt.springdemo.service;
import com.rt.springdemo.dao.IUserDAO;
import com.rt.springdemo.model.User;
public class UserService {
private IUserDAO userDAO; //xml中,"u1"对应class="com.rt.springdemo.dao.impl.UserDAOImpl",将注入在此
public void add(User user) {//test调用这个add方法
userDAO.save(user);
}
public IUserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(IUserDAO userDAO) {//xml中调用的方法
this.userDAO = userDAO;
}
}
4.impl具体执行
public interface IUserDAO {
public void save(User user);//接口里就这一个方法
}
package com.rt.springdemo.dao.impl;
import com.rt.springdemo.dao.IUserDAO;
import com.rt.springdemo.model.User;
public class UserDAOImpl implements IUserDAO {
public void save(User user) {
//Hibernate、JDBC等.....
System.out.println("user saved!");
}
}