- 浏览: 1208039 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1431转:spring 3 和mybatis 3集成,并用junit ... -
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
2011-11-03 16:17 2683用Myeclipse开发struts时,配置struts-co ... -
Strut2+Spring整合框架搭建
2011-11-02 22:19 1052参考:http://lukuijun.iteye.com/bl ... -
Spring+hibernate延迟加载报错解决办法之二
2010-06-29 17:28 1196在做删除操作的时候出现了org.springframework ... -
Spring+hibernate延迟加载报错解决办法之一
2010-06-29 17:25 1185我们在项目中一般都会使用Spring来管理Hibernate的 ... -
Spring项目中怎么配置log4j
2010-05-27 11:10 1557在spring项目中配置log4j http://blogg ... -
Spring与Struts集成方式三
2010-05-26 17:11 1123在集成方式一和二中我们是在web.xml中加入配置代码: & ... -
Spring与Struts集成方式二
2010-05-26 14:49 1021在集成方式一的基础上做改进: 第一种集成方案是在action ... -
Spring与Struts集成方式一
2010-05-25 14:13 887我们在Struts中在action类中调用Model层组件进行 ... -
Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)
2010-05-24 17:15 2749采用编程式事务 事务主要分为:编程式事务和声明式事务 ... -
修改Eclipse配置,使得在配置文件中完成自动完成功能。
2010-05-24 15:10 2269在Eclipse中引入spring的配置文件applicati ... -
Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理
2010-05-24 14:52 4098基于schema的aop只是将配置写到配置文件中。 代 ... -
Spring AOP 概念理解及@AspectJ支持
2010-05-20 15:56 1559为了更好的理解Spring简介一文http://quicker ... -
Spirng AOP简介
2010-05-19 17:28 2260AOP 面向切面编程(AOP)通过提供另外一种思考程序结构的 ... -
Spring Bean中的自动装配——byType
2010-05-19 17:08 1165自动装配byType即通过查找类属性在配置文件中bean中定义 ... -
Spring Bean中的自动装配——byName
2010-05-19 16:34 3125自动装配(autowire)协作者 Spring IoC容器 ... -
Spring Bean的作用域:用Spring来解决Struts中Action的单实例问题
2010-05-19 10:47 1536我们知道在Struts中Action是从map中拿出来的,是单 ... -
Spring Bean定义的继承
2010-05-19 10:36 1308现有Bean2,Bean3,Bean4,Bean5 可观察到 ... -
Spring Set注入:基本类型、List、Map、Set、Array、Date类型注入
2010-05-18 15:58 11501Spring依赖注入有两种:构造器注入与Set注入 其中以S ... -
简单DAO层示例
2010-05-14 17:30 2055在使用spring架构之前,我们怎么设计自己的DAO层的呢? ...
相关推荐
Spring初探 准备工作 构建Spring基础代码 Spring 基础语义 Dependency Injection 依赖注入的几种实现类型 Type1 接口注入 Type2 设值注入 Type3 构造子注入 几种依赖注入模式的对比总结 Spring Bean封装...
SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第一次 SpringCloud服务拆分初探与案例解析 cloud-demo第...
初探spring aop内部实现 、从源代码解读spring之DataSource实现和FactoryBean模式
Spring初探.......................................................................................................................5 准备工作...............................................................
分为五章,Spring初探,Spring几本概念,SpringAop,Spring中间层数据访问,Spring高级特性。
SpringCache缓存初探共5页.pdf.zip
关于mybatis的spring boot可执行代码,对应的解说博客地址在:https://blog.csdn.net/heidashou/article/details/105812796,含有全过程截图和解说。
NULL 博文链接:https://cdxs2.iteye.com/blog/1974942
快速搭建一个spring案例, 手把手教你使用SpringBoot搭建一个增删改查的小项目,里面还用到了idea的Mybatis-Generator的插件。
http://blog.csdn.net/i_scream_/article/details/79007192
Spring.net二----初探IOC容器.rar
从代理机制初探 AOP 动态代理 <br>AOP 观念与术语 Spring AOP Advices Advices 包括了Aspect 的真正逻辑,由于缝合至Targets的时机不同,Spring 提供了几种不同的 Advices。 Before ...
NULL 博文链接:https://yzxqml.iteye.com/blog/1756106
NULL 博文链接:https://yangjizhong.iteye.com/blog/1206901
NULL 博文链接:https://cdxs2.iteye.com/blog/1949686
这是一篇完整的论文,对初学ASP.NET者很有帮助
初探Eureka:spring-cloud-starter-eureka:服务客户端(服务的真实提供者)@EnableEurekaClient就成了服务客户端spring-cloud-starter-eureka-sever:服务注册中心(只供服务的注册和发现)在spring 启动类上注解 ...