Spring简单实例
更新时间:2024-01-08 04:01:01 阅读量: 教育文库 文档下载
Spring 实例入门
本文结合实例理解解容器,DI,IOC,耦合,解耦等Spring所涉及的概念,同时了解Spring的最基本也是最核心的使用方法。 1. Spring容器
Spring容器负责对象的实例化,对象生命周期的管理,被Spring管理的对象称之为Bean。 例如有Soldier类需要交由Spring容器管理,我们先编写类 package com.hb; public class Soldier { } private String name; public String getName() { } public void setName(String name) { } this.name = name; return name; 在Spring配置文件中添加如下配置
方式。 Setter注入:
Soldier类中有一个属性name,如何在创建Soldier的时候使name的值变为”RANBO”? 配置如下:
public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(\); Soldier s1 = (Soldier) context.getBean(\); System.out.println(s1.getName()); }
构造注入:
我们先修改下Soldier类,给它添加一个构造方法: package com.hb; public class Soldier { private String name; public Soldier(String name) { this.name = name; } public String getName() { } return name; } 配置如下:
3. 依赖
当A对象使用了B对象的方法,A对B产生依赖,称之为A依赖B。下面的例子中Soldier类依赖HandGun类。 package com.hb; /** * 士兵类 */ public class Soldier { } /** * 打仗 */ public void fight(){ HandGun handGun = new HandGun(); handGun.killEnemy(); } package com.hb; /** * 手枪类 */ public class HandGun { } /** * 手枪杀敌 */ public void killEnemy(){ System.out.println(\手枪杀敌\); } 当HandGun发生变化时,必然导致Soldier必须做相应修改,同时,当Soldier需要使用OtherGun时也必须重新编写代码,导致代码重用度不高。
当对象之间的依赖关系很强时(耦合),会使程序代码死板,不利于后期的维护和扩展。降低对象之间的依赖关系称之为解耦。Spring能够很好的解决这一问题。
4. 控制反转(Inversion of Control,简称IOC)和依赖注入(Dependence Inject简称DI) 我们运用Spring的setter注入方式解决HandGun和Soldier的耦合问题。修改Soldier的代码,将HandGun定义为Soldier的属性并提供setter方法:
package com.hb; /** * 士兵类 */
public class Soldier { }
private HandGun handGun;
public void setHandGun(HandGun handGun) { } /** * 打仗 */
public void fight(){
handGun.killEnemy(); }
this.handGun = handGun;
配置如下
package com.hb; /** * 武器接口 */
public interface Weapon { }
/** * 杀敌 */
void killEnemy();
package com.hb; /** * 手枪类 */
public class HandGun implements Weapon{ }
/** * 手枪杀敌 */
public void killEnemy(){
System.out.println(\手枪杀敌\); }
package com.hb; /** * 士兵类 */
public class Soldier { }
private Weapon weapon;
public void setWeapon(Weapon weapon) { } /**
* 使用武器打仗 */
public void fight(){
weapon.killEnemy(); }
this.weapon = weapon;
配置如下
看一下你是否已经有所领悟了:
假如“手枪“已经不满足“士兵”的需要,我们需要将“手枪”更换为更先进的“机枪”,你的程序如何编写呢?自己试一下吧!!
spring2.0常见异常
2009-04-06 19:50:51| 分类: Spring | 标签: |字号大中小 订阅 1:Exception in thread \org/apache/commons/logging/LogFactory at
org.springframework.util.ClassUtils.
org.springframework.core.io.DefaultResourceLoader.
org.springframework.context.support.AbstractRefreshableApplicationContext.
org.springframework.context.support.AbstractXmlApplicationContext.
需要加上:commons-logging.jar log4j-1.2.11.jar
2:Exception in thread \Unexpected exception parsing XML document from class path resource [text.xml]; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException Caused by: java.lang.NoClassDefFoundError:
org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException at java.lang.Class.forName0(Native Method) 需要加上:aspectjweaver.jar
3:Exception in thread \bean with name 'logBean' defined in class path resource [text.xml]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces. Caused by: org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces. 需要加上:cglib-2.1.3.jar
4:Exception in thread \bean with name 'logBean' defined in class path resource [text.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180) 需要加上:asm.jar
转载:http://pengchua.javaeye.com/blog/142879
5: CGLIB Enhancement failed: com.bowen.domain.Schools java.lang.NoSuchMethodError:
org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
解决:由于不同版本让我想到了可能会因为其它三方包是不同版本引起的最新的MyEclipse,所以里面的Hibernate也是最新的3.1(它里面还带有一个3.0版本的) 删除 多余的包 Hibernate3.1现象2:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'sessionFactory' defined in resource [/WEB-INF/dataAccessContext-hibernate.xml] of ServletContext: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 原因:缺少jta.jar
6.Unexpected exception parsing XML document from class path resource [exer/applicationContext.xml]; nested exception is java.lang.SecurityException: class
\signer information of other classes in the same package Caused by: java.lang.SecurityException: class
\signer information of other classes in the same package 原因:jar包冲突,spring.jar和spring-core.jar冲突
解决:保留spring-core.jar,spring-web.jar,spring-context.jar
正在阅读:
Spring简单实例01-08
苹果的自述作文350字07-04
单片机原理与接口技术实验指导(c语言版)09-16
(公文作业) 宿管会年度工作计划(草案)04-26
输送血液的泵说课稿07-23
风作文之贾平凹的风雨读书笔记03-23
The ways to keep fit03-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实例
- 简单
- Spring
- 02第二讲 层次分析法
- 山东省德州市高中物理 2.10实验:测定电池的电动势和内阻(学生版) 新人教版选修3-1
- 招商引资合同书
- 2005-2016年江苏省一模(导数与函数)南京德才教育纯Word呕心沥血整理
- 初中物理组卷
- 2010年全国职称英语理工类(B级)考试真题及答案
- 油品使用管理规定修改
- 高考数学一轮复习 第六章 不等式、推理与证明 直接证明与间接证明练习 理-课件
- 软件工程课程设计--研究生选课系统
- 市场营销2016—2017年度对口单招文化统考调研测试卷(一)
- 国地税纳税服务工作交流经验材料
- 辽宁省关于完善矿业权转让进场交易有关事项的通知
- Linux 2.6.19.x内核配置说明
- 山东省潍坊市临朐县2016届高三上学期12月份统考语文试题 Word版含答案 doc
- 高分子化学实验指导书-2011
- 股骨粗隆间骨折的手术治疗策略
- 劳动单元教学设计
- 王羲之
- 中式烹调师培训复习资料
- 结构主义语言学介绍