`
yxwang0615
  • 浏览: 560993 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Spring2.0(一)第一个Spring程序、IoC的应用

阅读更多
 

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

分享到:
评论

相关推荐

    Spring2.0中文教程

    Spring 2.0是Spring框架的一个重要版本,它在Java企业级应用开发中扮演着核心角色。本教程将深入探讨Spring 2.0的核心特性和关键功能,旨在帮助开发者掌握这个强大框架的基础与高级概念。 1. **依赖注入...

    spring2.0技术手册_源代码(全十章)

    首先,Spring 2.0是一个重要的版本升级,引入了许多新特性和改进,旨在提高开发效率和应用的可测试性。其中,最重要的更新之一是支持JSR-250的`@ManagedBean`和`@PostConstruct`注解,使得bean的管理更加简洁。在源...

    java学习之spring2.0

    综上,Spring 2.0不仅是一个强大的框架,也是构建现代Java应用的重要基石。它的全面性和灵活性使得开发者能够以高效、简洁的方式实现复杂的企业级功能。通过深入理解和熟练掌握Spring 2.0,开发者可以构建出高质量、...

    廖雪峰 Spring 2.0 核心技术与最佳实践 高清扫描版

    Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛使用,它的2.0版本更是引入了许多重要改进和新特性,使得应用程序的开发更加高效和灵活。 该教程首先会介绍Spring的基本概念,包括依赖注入(Dependency ...

    spring2.0核心技术最佳实践源代码

    1. **AOP(面向切面编程)**:Spring 2.0在AOP方面有着强大的支持,允许开发者创建和管理横切关注点,如日志、事务管理和安全性。AOP通过定义切点、通知和组装切面来实现代码解耦,提高可维护性。 2. **事务管理**...

    Spring2.0jar包

    Spring 2.0 是一个里程碑式的版本,标志着Spring框架在企业级Java开发中的广泛应用。这个版本引入了许多增强功能,使得Spring成为了J2EE项目中不可或缺的集成框架。下面将详细介绍这些jar包及其在Spring 2.0中的作用...

    spring2.0framework.doc

    无论是对于开发者还是集成者,Spring 2.0 都提供了更高效、更强大的工具来构建和管理应用程序。通过控制反转容器的改进,XML 配置的简化,以及面向切面编程的支持,Spring 2.0 成为了现代 Java 应用开发的重要基石。

    spring2.0升级到spring3.0.5的开发包

    Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...

    Spring2.0宝典丛书08-10

    《Spring2.0宝典丛书》是一套深入探讨Spring 2.0框架的权威指南,旨在帮助开发者全面理解和掌握这一核心Java企业级开发框架。该系列书籍覆盖了Spring框架的各个方面,从基础概念到高级特性,为读者提供了丰富的学习...

    Spring2.0压缩包目录说明

    综上所述,Spring2.0的压缩包结构清晰地划分了各个功能模块,使得开发者可以根据自己的需求选择合适的库文件来构建应用程序。通过深入了解这些库文件的功能,可以更好地利用Spring框架的强大功能来提高开发效率和...

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于Java EE平台的MVC框架,用于简化Web应用程序的开发。 - **特点**: - 高度灵活的配置性; - 强大的拦截器机制; - 支持多种视图技术(如JSP、...

    spring2.0技术手册_林信良_源代码

    10. **Spring Boot**:虽然《Spring 2.0 技术手册》主要讨论的是Spring 2.0,但值得一提的是,Spring Boot是后来出现的一个快速开发框架,它基于Spring框架,简化了配置,并集成了许多常见的第三方库,使得开发...

    spring2.0宝典光盘

    1. **Spring MVC**:Spring MVC是Spring框架的一部分,用于构建Web应用程序。它提供了模型-视图-控制器架构,使得开发人员能够清晰地分离业务逻辑、数据处理和用户界面。在新闻系统中,Spring MVC负责处理HTTP请求,...

    spring2.0技术手册随书光盘7

    《Spring 2.0 技术手册》是林信良先生撰写的一本深入解析Spring框架的经典著作,书中全面且深入地介绍了Spring 2.0版本的相关技术和最佳实践。随书附带的光盘资源,包括了多个章节的详细资料,便于读者更深入地理解...

    Spring2.0宝典源代码

    《Spring2.0宝典》是由李刚编著的一本深度解析Spring框架2.0版本的权威指南。这本书深入浅出地介绍了Spring的核心特性和实际应用,为读者提供了丰富的实践案例和详尽的代码示例。现在我们来详细探讨一下其中涉及的...

    Struts2.0+spring2.0+hibernate开发JAR包

    **Spring2.0** 是一个全面的企业级应用框架,不仅包含了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大核心特性,还提供了数据访问、事务管理、Web MVC、缓存、消息...

    Spring 2.0 开发参考手册

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...

    spring2.0宝典

    这一章主要讲解了Spring MVC,它是Spring提供的一个用于构建Web应用的MVC框架。包括控制器(Controller)、模型-视图-控制器模式、视图解析、表单绑定、数据验证以及Spring MVC与其他Spring模块的集成,如AOP和数据...

    Struts1.3.8_Spring2.0_hibernate3.0(jars)

    Struts1.3.8_Spring2.0_hibernate3.0(jars)是一个整合了三个主流Java企业级开发框架的压缩包,分别是Struts、Spring和Hibernate。这些框架在Java Web开发中扮演着至关重要的角色,它们各自解决了一部分问题,而组合...

Global site tag (gtag.js) - Google Analytics