集成Srping先要下载Spring的相关文件,可以下载Spring提供的框架包,名如spring-framework-2.0-with-dependencies.zip,其中包含所需求jar包、源码、样例、文档等。以下描述中SPRING_HOME为此包解压后的目录。
SPRING_HOME/dist/spring.jar
Spring的核心包。
SPRING_HOME/lib/jakarta-commons/commons-logging.jar
开源日志管理包,可以自动选择用是否用log4j。
SPRING_HOME/lib/log4j/log4j-1.2.14.jar
log4j核心包。
导入方法:右击项目,选properties,在打开的窗口中选中“Java Build Path”一项中的“Libraries标签”。“Add JARs”可以添加项目中的jar文件,“Add External JARs”可以添加系统中的jar文件。
主要为“spring配置文件”和“log4j配置文件”。
JAVA项目可以放到src目录下 ,WEB项目可以放到WEB-INF目录下。
可以从SPRING_HOME/samples中的示例项目中复制这两个文件,在WEB-INF目录下。
spring配置文件可以自己定,log4j配置文件一般为log4j.properties不要改动。
Spring配制文件在编辑时,可以有智能提示,这要通过配制编辑器的“XML Catalog”来实现。
SPRING_HOME/dist/resources/spring-beans-2.0.xsd即为配制bean时对应的智能提示文件。
配制步骤:
打开“Window\Preference\MyEclipse\Files and Editors\XML\XML Catalog”窗口。
选中“User Specified Entries”或“Plugin Specified Entries”点击添加按钮。
“Key ype”选URI,“Location”从文件系统选spring-beans-2.0.xsd。
重新选“Key ype”为“Schema location”。
把“Key”补全,后面加上“/spring-beans-2.0.xsd”。
最后“Key”应该类似“http://www.springframework.org/schema/beans/spring-beans-2.0.xsd”。
这样编辑Spring配制文件时就会有智能提示了。
package com.iteedu.service; public interface IUserService { public void save(String userName,String pwd); }
package com.iteedu.service; public interface IUserService { public void save(String userName,String pwd); }
package com.iteedu.dao; public class UserDAO4OracleImpl implements IUserDAO { @Override public void save(String userName, String pwd) { System.out.println("-----UserDAO4OracleImpl-----"); } }
package com.iteedu.service; public interface IUserService { public void save(String userName,String pwd); }
package com.iteedu.service; import com.iteedu.dao.IUserDAO; public class UserServiceImpl implements IUserService { private IUserDAO userDAO; public UserServiceImpl(){} public UserServiceImpl(IUserDAO dao){ userDAO=dao; } @Override public void save(String userName, String pwd) { userDAO.save(userName, pwd); } public IUserDAO getUserDAO() { return userDAO; } public void setUserDAO(IUserDAO userDAO) { this.userDAO = userDAO; } }
package com.iteedu.client; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.iteedu.service.IUserService; public class Client { public static void main(String[] args) { // IUserService service=new UserServiceImpl(new UserDAO4OracleImpl()); // IUserService service=new UserServiceImpl(new UserDAO4MysqlImpl()); // service.save("", ""); BeanFactory fac=new ClassPathXmlApplicationContext("applicationContext.xml"); IUserService us4Mysql=(IUserService) fac.getBean("userService4Mysql"); us4Mysql.save("", ""); IUserService us24Oracle=(IUserService) fac.getBean("userService4Oracle"); us24Oracle.save("", ""); } }
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="userDAO4Oracle" class="com.iteedu.dao.UserDAO4OracleImpl"/> <bean id="userDAO4Mysql" class="com.iteedu.dao.UserDAO4MysqlImpl"/> <bean id="userService4Mysql" class="com.iteedu.service.UserServiceImpl"> <constructor-arg ref="userDAO4Mysql"/> </bean> <bean id="userService4Oracle" class="com.iteedu.service.UserServiceImpl"> <property name="userDAO" ref="userDAO4Oracle"></property> </bean> </beans>
用setter方法注入bean时,要么没有构造函数,要有必需有一空参的构造函数。以上配制中UserServiceImpl别用构造函数注入的setter方法注入,所以必需有一个空参构造函数,要不然用setter方法注入时生成不了UserServiceImpl实例。