- 浏览: 1229595 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
Spring核心设计思想为IOC(Inverse of Control)或依赖注入(Dependence Injection)。
IOC即由容器来控制程序之间的关系,而非传统代码直接操控。
先看第一个spring项目,该项目由上文
http://quicker.iteye.com/blog/666673
项目改写而成,使用spring。
1、spring依赖库的配置: * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/jakarta-commons/commons-logging.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar 2、将spring的配置文件拷贝到src下 3、在UserManagerImpl类中,我们定义setter方法,让spring将实例化好的UserDao对象实现给我们 4、让spring管理我们对象的创建,让spring管理对象的依赖,即定义spring配置文件 5、在客户端,通过BeanFactory来访问spring管理的对象,如: //通过配置文件初始化工厂 BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); //通过bean工厂取得工厂中的对象 UserManager userManager = (UserManager)factory.getBean("userManager"); spring的关键点: * 让spring来管理你的对象,需要将被管理的对象定义在配置文件中 * 定义setter方法或构造函数 以上两步缺一不可,只有这样定义之后,你的对象之间的依赖关系才能被spring管理
程序结构图:
看具体代码:
package com.lwf.bean; public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.lwf.client; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.lwf.bean.User; import com.lwf.manager.UserManager; public class Client { public static void main(String[] args) { User user = new User(); user.setAge(11); user.setName("zhangshang"); ApplicationContext ctx = new FileSystemXmlApplicationContext("/src/applicationContext.xml"); //BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); UserManager userManager = (UserManager)ctx.getBean("userManager"); userManager.save(user); } }
package com.lwf.dao; import com.lwf.bean.User; public interface UserDao { void save(User user); }
package com.lwf.dao; import com.lwf.bean.User; public class UserDaoImp4MySql implements UserDao { @Override public void save(User user) { // TODO Auto-generated method stub System.out.println("UserDaoImp4MySql"); System.out.println("UserName :" + user.getName() + "User Age:" + user.getAge()); } }
package com.lwf.dao; import com.lwf.bean.User; public class UserDaoImp4Oracle implements UserDao { @Override public void save(User user) { // TODO Auto-generated method stub System.out.println("UserDaoImp4Oracle"); System.out.println("UserName :" + user.getName() + "User Age:" + user.getAge()); } }
package com.lwf.manager; import com.lwf.bean.User; public interface UserManager { void save(User user); }
package com.lwf.manager; import com.lwf.bean.User; import com.lwf.dao.UserDao; public class UserManagerImp implements UserManager { private UserDao userDao ; public void save(User user) { // TODO Auto-generated method stub userDao.save(user); } public void setUserDao(UserDao userDao){ this.userDao = userDao; } }
下面是配置文件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.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <bean id="userDaoImp4MySql" class="com.lwf.dao.UserDaoImp4MySql"/> <bean id="userDaoImp4Oracle" class="com.lwf.dao.UserDaoImp4Oracle"/> <bean id="userManager" class="com.lwf.manager.UserManagerImp"> <property name="userDao" ref="userDaoImp4Oracle"/> </bean> </beans>
还有一个log4j.properties文件。
# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml! # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J. log4j.rootLogger=INFO, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=${petstore.root}/WEB-INF/petstore.log log4j.appender.logfile.MaxFileSize=512KB # Keep three backup files. log4j.appender.logfile.MaxBackupIndex=3 # Pattern to output: date priority [category] - message log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
说明:
配置文件中:
<bean id="userDaoImp4MySql" class="com.lwf.dao.UserDaoImp4MySql"/> <bean id="userDaoImp4Oracle" class="com.lwf.dao.UserDaoImp4Oracle"/> <bean id="userManager" class="com.lwf.manager.UserManagerImp"> <property name="userDao" ref="userDaoImp4Oracle"/> </bean>
上面代码实际上spring为UserManagerImp类设置属性userDao。我们的测试代码创建User类,然后再通过代码:
ApplicationContext ctx = new FileSystemXmlApplicationContext("/src/applicationContext.xml"); //BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); UserManager userManager = (UserManager)ctx.getBean("userManager"); userManager.save(user);
实际上代码中对于UserDao我们有两个实现,一个是mysql一个是oracle的实现。那么假如客户要在不同的数据库进行迁移,我们只要将 ref="userDaoImp4Oracle"改为 ref="userDaoImp4MySql"即可。
默认输出结果为:
2010-05-17 16:22:05,593 INFO [org.springframework.context.support.FileSystemXmlApplicationContext] - Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@19fcc69: display name [org.springframework.context.support.FileSystemXmlApplicationContext@19fcc69]; startup date [Mon May 17 16:22:05 CST 2010]; root of context hierarchy 2010-05-17 16:22:05,765 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from file [D:\workdirlocal\spring_start\src\applicationContext.xml] 2010-05-17 16:22:06,203 INFO [org.springframework.context.support.FileSystemXmlApplicationContext] - Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext@19fcc69]: org.springframework.beans.factory.support.DefaultListableBeanFactory@5e5a50 2010-05-17 16:22:06,234 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5e5a50: defining beans [userDaoImp4MySql,userDaoImp4Oracle,userManager]; root of factory hierarchy UserDaoImp4Oracle UserName :zhangshangUser Age:11
- spring_start.rar (8.8 KB)
- 下载次数: 23
发表评论
-
spring 3 和mybatis 3集成,并用junit4进行测试
2011-11-04 14:01 1465转:spring 3 和mybatis 3集成,并用junit ... -
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
2011-11-03 16:17 2748用Myeclipse开发struts时,配置struts-co ... -
Strut2+Spring整合框架搭建
2011-11-02 22:19 1078参考:http://lukuijun.iteye.com/bl ... -
Spring+hibernate延迟加载报错解决办法之二
2010-06-29 17:28 1213在做删除操作的时候出现了org.springframework ... -
Spring+hibernate延迟加载报错解决办法之一
2010-06-29 17:25 1213我们在项目中一般都会使用Spring来管理Hibernate的 ... -
Spring项目中怎么配置log4j
2010-05-27 11:10 1585在spring项目中配置log4j http://blogg ... -
Spring与Struts集成方式三
2010-05-26 17:11 1152在集成方式一和二中我们是在web.xml中加入配置代码: & ... -
Spring与Struts集成方式二
2010-05-26 14:49 1045在集成方式一的基础上做改进: 第一种集成方案是在action ... -
Spring与Struts集成方式一
2010-05-25 14:13 916我们在Struts中在action类中调用Model层组件进行 ... -
Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)
2010-05-24 17:15 2769采用编程式事务 事务主要分为:编程式事务和声明式事务 ... -
修改Eclipse配置,使得在配置文件中完成自动完成功能。
2010-05-24 15:10 2299在Eclipse中引入spring的配置文件applicati ... -
Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理
2010-05-24 14:52 4130基于schema的aop只是将配置写到配置文件中。 代 ... -
Spring AOP 概念理解及@AspectJ支持
2010-05-20 15:56 1584为了更好的理解Spring简介一文http://quicker ... -
Spirng AOP简介
2010-05-19 17:28 2285AOP 面向切面编程(AOP)通过提供另外一种思考程序结构的 ... -
Spring Bean中的自动装配——byType
2010-05-19 17:08 1182自动装配byType即通过查找类属性在配置文件中bean中定义 ... -
Spring Bean中的自动装配——byName
2010-05-19 16:34 3152自动装配(autowire)协作者 Spring IoC容器 ... -
Spring Bean的作用域:用Spring来解决Struts中Action的单实例问题
2010-05-19 10:47 1562我们知道在Struts中Action是从map中拿出来的,是单 ... -
Spring Bean定义的继承
2010-05-19 10:36 1327现有Bean2,Bean3,Bean4,Bean5 可观察到 ... -
Spring Set注入:基本类型、List、Map、Set、Array、Date类型注入
2010-05-18 15:58 11549Spring依赖注入有两种:构造器注入与Set注入 其中以S ... -
简单DAO层示例
2010-05-14 17:30 2080在使用spring架构之前,我们怎么设计自己的DAO层的呢? ...
相关推荐
标题中的“Spring初探共18页.pdf.zip”表明这是一个关于Spring框架的压缩文档,共有18页PDF内容。从标签“Spring初探共18页.pdf”我们可以推测,这份资料可能是一个关于Spring框架基础入门的学习资料,适合初学者。 ...
- **Spring 初探**:Spring的核心在于依赖注入(DI)和面向切面编程(AOP),提供了一个轻量级的容器来管理对象的生命周期和相互依赖关系。 - **Spring 体系**:包括Core Container(核心容器)、Data Access/...
在Spring初探部分,首先涉及到的是准备工作,包括安装必要的开发环境和配置工具,为构建Spring基础代码做准备。接下来,指南会介绍Spring的基础语义,特别是依赖注入(Dependency Injection,简称DI)的概念及其在...
#### Spring初探与准备工作 Spring框架的核心在于其独特的依赖注入(DI)机制。DI允许开发者将组件之间的依赖关系外部化,从而实现组件间的解耦合,使得代码更加模块化和可测试。为了开始使用Spring,首先需要准备...
SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第...
1. **Spring初探** 在这一章中,我们将从Spring框架的基础出发,介绍其诞生背景和主要目标。我们会讲解Spring如何简化Java应用的开发,以及它提供的依赖注入(Dependency Injection, DI)机制,这是Spring的核心...
#### Spring初探:基础知识与构建环境 ##### 准备工作 在着手Spring Framework的开发之前,开发者需要搭建好必要的开发环境。这包括但不限于安装Java开发工具包(JDK),配置开发环境(如IDEA或Eclipse),并确保具备...
#### Spring初探:框架入门 - **准备工作**:在开始使用Spring框架之前,需要进行一系列的准备工作,包括环境搭建、框架下载和配置。Spring框架通常通过Maven或Gradle等构建工具进行管理,确保项目能够顺利地集成...
#### Spring初探 Spring框架的核心优势在于其对Java EE复杂性的简化处理,通过提供一系列的模块,如核心容器、数据访问/集成、Web、AOP、测试等,使得开发者能够专注于业务逻辑而非框架细节。本节将带领读者了解...
##### Spring初探 - **准备工作**:在深入研究Spring之前,作者建议先进行一系列的准备活动,包括环境搭建、工具配置等,确保开发者能够顺利地运行和测试Spring相关的代码示例。 - **构建Spring基础代码**:这一...
Spring初探.......................................................................................................................5 准备工作...............................................................