Spring的IoC是采用DI来实现的。
1. 新建工程,需要的jar包:
* spring-framework-2.0\dist\spring.jar (Spring2.0的核心包);
* spring-framework-2.0\lib\jakarta-commons\commons-logging (日志记录);
* spring-framework-2.0\lib\log4j\log4j-1.2.14 (log4j);
2. 从spring-framework-2.0\samples\jpetstore\war\WEB-INF下拷贝applicationContext.xml到工
程src/目录下,删除注释等无关的内容,只保留beans根节点:
<?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">
</beans>
3.加入log4j文件,可以用Hibernian的,也可以从Spring的示例程序spring-framework-2.0
\samples\jpetstore\war\WEB-INF\下找到log4j.properties(两种log4j文件并不一样)。
4.在applicationContext.xml中描述依赖关系,默认情况下载里头敲任何节点都不给提示的,可以载eclipse中加入对该
xml的提示帮助文件spring-beans-2.0.xsd(不要用 .dtd,现在xsd的用的多),该文件可以从spring-framework-
2.0\dist\resources\下找到,最好放在eclipse的安装目录下,防止文件移动还要重新配置。
具体的做法:windows > perference > MyEclipse Enterprise Workbench > XML >XML Catalog > Add..
key Type选择URI,Location 选择spring-beans-2.0.xsd的路径,这时Key会自动生成路径,再key路径的末尾
追加/spring-beans-2.0.xsd ,最后再把key Type 选择为 Schema Location 点击OK即完成了该xsd约束文件
的添加,重开一下applicationContext.xml,约束提示功能已经生效了。
5.做个示例:
工程的目录结构如下:
package com.wyx.sring.dao;
public interface UserDao {
public void save(String name, String passwd);
}
package com.wyx.sring.dao;
public class UserDao4MySqlImpl implements UserDao{
public void save(String name, String passwd) {
System.out.println("-----------UserDao4MySqlImpl.save()--------------");
}
}
package com.wyx.sring.dao;
public class UserDao4OracleImpl implements UserDao{
public void save(String name, String passwd) {
System.out.println("-----------UserDao4OracleImpl.save()--------------");
}
}
package com.wyx.sring.manager;
public interface UserMangager {
public void save(String name, String passwd);
}
必须在 UserManagerImpl中提供构造函数或setter方法(setter在后面介绍),Spring才能将实例化好的UserDao实
现注入给我们
package com.wyx.sring.manager;
import com.wyx.sring.dao.UserDao;
public class UserManagerImpl implements UserMangager {
private UserDao userDao;
public UserManagerImpl(UserDao userDao) {
this.userDao = userDao;
}
public void save(String name, String passwd) {
userDao.save(name, passwd);
}
}
<?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="userDao4MySqlImpl" class="com.wyx.sring.dao.UserDao4MySqlImpl"/>
<bean id="userDao4OracleImpl" class="com.wyx.sring.dao.UserDao4OracleImpl"/>
<bean id="userManagerImpl" class="com.wyx.sring.manager.UserManagerImpl">
<!-- 使用构造子注入时,则使用constructor-arg子标签,来指定构造函数的参数 -->
<constructor-arg ref="userDao4OracleImpl"/>
</bean>
</beans>
这样再Client中调用不同的UserManager实现只需要修改applicationContext.xml下constructor-arg 标签的ref
值即可,Client如下所示:
package com.wyx.sring.client;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.wyx.sring.dao.UserDao;
import com.wyx.sring.dao.UserDao4MySqlImpl;
import com.wyx.sring.manager.UserManagerImpl;
public class CLient {
public static void main(String[] args) {
// UserManagerImpl userManagerImpl = new UserManagerImpl(new UserDaoImpl());
// userManagerImpl.save("张三", "123");
//给客户端拿到的就是manager层,manager不能再用上面注释掉的部分一样new出来,我们现在
//要从IoC容器中拿。
//首先要装载配置文件,Spring提供了BeanFactory抽象工厂
//找到classpath下的applicationContext.xml文件
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
//根据Id告诉配置文件,需要哪个类,Spring给你这个类的时候,
//已经把这个类所有依赖的所有对象实例化好,并且注入给你
UserManagerImpl userMageImpl = (UserManagerImpl)factory.getBean("userManagerImpl");
userMageImpl.save("张三", "123");
}
}
applicationContext.xml写法定义:
配置文件的根元素是beans
,每个组件使用bean
元素来定义,bean元素可以有许多属性,其中有两个是必须的:id
和
class
。id表示组件的默认名称class表示组件包名下的完整路径。
注意:
(1) 并不是所有的对象都要配置到IoC容器中,我们只需要配置变化的业务层对象。
(2) UserManagerImpl中提供构造函数,spring将实例化好的UserDao实现注入给我们。
(3) 让Spring管理对象创建和依赖关系,必须在Spring配置文件applicationContext.xml中定义。
使用setter方法实现依赖注入:
1.修改UserManagerImpl:
package com.wyx.sring.manager;
import com.wyx.sring.dao.UserDao;
public class UserManagerImpl implements UserMangager {
private UserDao userDao;
/*public UserManagerImpl(UserDao userDao) {
this.userDao = userDao;
}*/
public void save(String name, String passwd) {
userDao.save(name, passwd);
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
2.修改applicationContext.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"
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="userDao4MySqlImpl" class="com.wyx.sring.dao.UserDao4MySqlImpl"/>
<bean id="userDao4OracleImpl" class="com.wyx.sring.dao.UserDao4OracleImpl"/>
<bean id="userManagerImpl" class="com.wyx.sring.manager.UserManagerImpl">
<property name="userDao"> <ref local="userDao4OracleImpl"/></property>
</bean>
</beans>
运行Clinet.java,查看输出结果。注意:property的那么属性应该指定UserManagerImpl的set方法对应的名字
(详查Java Bean规范)。
有关applicationContext.xml的更详细配置,参考:
http://hi.baidu.com/wsgongbing/blog/item/0412863333484cfb1a4cffe7.html
分享到:
相关推荐
Spring 2.0是Spring框架的一个重要版本,它在Java企业级应用开发中扮演着核心角色。本教程将深入探讨Spring 2.0的核心特性和关键功能,旨在帮助开发者掌握这个强大框架的基础与高级概念。 1. **依赖注入...
首先,Spring 2.0是一个重要的版本升级,引入了许多新特性和改进,旨在提高开发效率和应用的可测试性。其中,最重要的更新之一是支持JSR-250的`@ManagedBean`和`@PostConstruct`注解,使得bean的管理更加简洁。在源...
综上,Spring 2.0不仅是一个强大的框架,也是构建现代Java应用的重要基石。它的全面性和灵活性使得开发者能够以高效、简洁的方式实现复杂的企业级功能。通过深入理解和熟练掌握Spring 2.0,开发者可以构建出高质量、...
Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛使用,它的2.0版本更是引入了许多重要改进和新特性,使得应用程序的开发更加高效和灵活。 该教程首先会介绍Spring的基本概念,包括依赖注入(Dependency ...
1. **AOP(面向切面编程)**:Spring 2.0在AOP方面有着强大的支持,允许开发者创建和管理横切关注点,如日志、事务管理和安全性。AOP通过定义切点、通知和组装切面来实现代码解耦,提高可维护性。 2. **事务管理**...
Spring 2.0 是一个里程碑式的版本,标志着Spring框架在企业级Java开发中的广泛应用。这个版本引入了许多增强功能,使得Spring成为了J2EE项目中不可或缺的集成框架。下面将详细介绍这些jar包及其在Spring 2.0中的作用...
无论是对于开发者还是集成者,Spring 2.0 都提供了更高效、更强大的工具来构建和管理应用程序。通过控制反转容器的改进,XML 配置的简化,以及面向切面编程的支持,Spring 2.0 成为了现代 Java 应用开发的重要基石。
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...
《Spring2.0宝典丛书》是一套深入探讨Spring 2.0框架的权威指南,旨在帮助开发者全面理解和掌握这一核心Java企业级开发框架。该系列书籍覆盖了Spring框架的各个方面,从基础概念到高级特性,为读者提供了丰富的学习...
综上所述,Spring2.0的压缩包结构清晰地划分了各个功能模块,使得开发者可以根据自己的需求选择合适的库文件来构建应用程序。通过深入了解这些库文件的功能,可以更好地利用Spring框架的强大功能来提高开发效率和...
- **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于Java EE平台的MVC框架,用于简化Web应用程序的开发。 - **特点**: - 高度灵活的配置性; - 强大的拦截器机制; - 支持多种视图技术(如JSP、...
10. **Spring Boot**:虽然《Spring 2.0 技术手册》主要讨论的是Spring 2.0,但值得一提的是,Spring Boot是后来出现的一个快速开发框架,它基于Spring框架,简化了配置,并集成了许多常见的第三方库,使得开发...
1. **Spring MVC**:Spring MVC是Spring框架的一部分,用于构建Web应用程序。它提供了模型-视图-控制器架构,使得开发人员能够清晰地分离业务逻辑、数据处理和用户界面。在新闻系统中,Spring MVC负责处理HTTP请求,...
《Spring 2.0 技术手册》是林信良先生撰写的一本深入解析Spring框架的经典著作,书中全面且深入地介绍了Spring 2.0版本的相关技术和最佳实践。随书附带的光盘资源,包括了多个章节的详细资料,便于读者更深入地理解...
《Spring2.0宝典》是由李刚编著的一本深度解析Spring框架2.0版本的权威指南。这本书深入浅出地介绍了Spring的核心特性和实际应用,为读者提供了丰富的实践案例和详尽的代码示例。现在我们来详细探讨一下其中涉及的...
**Spring2.0** 是一个全面的企业级应用框架,不仅包含了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大核心特性,还提供了数据访问、事务管理、Web MVC、缓存、消息...
9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...
这一章主要讲解了Spring MVC,它是Spring提供的一个用于构建Web应用的MVC框架。包括控制器(Controller)、模型-视图-控制器模式、视图解析、表单绑定、数据验证以及Spring MVC与其他Spring模块的集成,如AOP和数据...
Struts1.3.8_Spring2.0_hibernate3.0(jars)是一个整合了三个主流Java企业级开发框架的压缩包,分别是Struts、Spring和Hibernate。这些框架在Java Web开发中扮演着至关重要的角色,它们各自解决了一部分问题,而组合...