spring 学习笔记 王勇
王勇drp视频学习笔记
JAVA WEB 项目开发视频学习笔记1.PrepareStatement类相对应的占位符是:?比如select * from where id = ?的sql语句查询语句2.String类型的变量取子串用subString(int start, int end)函数3.使用批量删除,select * from table_name where name in (?, ?, ?...)4.开发时,在浏览器列出某一目录下的所有文件可以在Tomcat配置文件里面的list标签设置值为true,这样会调试方便,发布再改回来5.Session默认超时时间是30分钟,在tomcat_home/conf/web.xml文件配置6、JavaScript、html一般检查客户端输入合法性用JavaScript检查,更安全一点的JavaScript检查后服务器端再检查一遍,采用JavaScript检查主要减轻服务器端的负担。
取得参数名:getElementById()方法alert后获得当前编辑焦点:focus()方法引入外部JavaScript语法:<script src="../script/demo.js"></script>引入外部CSS语法:<link rel="stylesheet" href="../style/demo.css">7、字符串用equals()方法判断时,最好在系统全局定义一个常量,比如写一个util包下的Constant类定义一个常量public static final String NO = “N”;8、在设计中,对象模型应该细粒度,关系模型应该粗粒度,比如关系表的设计,设计太细,会有很多张表,对更新查询有效率影响。
9、查询数据库表时,两个表连接其中判断字段在另一个表中为空即没有数据,这样整条语句查询没有出现结果,这时就考虑使用外连接了:left join/right join.10、在JSP页面中取得表单传过来的参数类型都是字符串。
spring框架学习笔记(全)
spring1.这个框架并不像hibernate或struts那样为了完成特定的功能(操作数据库、处理Http请求),它只是用来优化我们的工程的结果、提升设计、降低耦合度。
2.核心:应用上下文ApplicationContext它就是用来管理工程中无数类型的核心,一般通过xml文件或者注解来管理。
它在启动时载入xml文件或注解中的类、类之间关系的信息,在使用时通过一些方式将管理的类型或对象取出使用。
3.(下载spring.zip,这里面包含了相应的jar包,以及文档)第一个spring的应用:1、导入jar包到工程中2、在src下创建一个叫applicationContext.xml的配置文件<beans><bean id="hello" class="....Hello"></bean><bean id="bye" class=".....Bye"></bean></beans>比如通过上述方式,我们就通过配置文件将,两个类Hello和Bye分别注册管理,其代号分别为hello和bye。
通过这两个代号,我们之后就能取出这个两个类的实例,并进行使用。
(相应的类要Hello,Bye事先自己定义好)3、使用ClassPathXmlApplicationContext来加载上一步中的xml文件,以及获取其中的某个beanApplicationContextctx = newClassPathXmlApplicationContext("applicationContext.xml");加载xml文件中的配置信息,两个类就被spring管理起来了Hello h = (Hello)ctx.getBean("hello");注意:取出bean时可以用多态4.开闭原则:对扩展开放,对修改关闭需求变更时,尽量扩展一个类,不要去修改原来的类;这样可以避免在原来正确的类上产生新的bug。
Spring学习笔记
Spring笔记SPRING笔记 (1)第一章SPRING简介 (3)一、S PRING是什么? (3)1、Spring是一个开源的用于简化采用Java语言开发企业级程序的一个分层的框架 (3)2、分层结构: (3)3、Spring源代码是公开的,但是非标准的 (4)二、S PRING的优点 (4)1、采用J2EE开发存在的问题: (4)2、为什么要使用Spring (4)三、S PRING的组成 (5)第二章SPRING的IOC (5)一、I O C的概念 (5)二、I O C的分类 (6)三、装配介绍 (6)1、Spring容器 (6)2、Spring开发要用到的JAR文件 (7)四、基本装配 (7)1、set方式注入 (7)1)注入简单属性(String和8中基本类型) (7)2)注入对象 (9)3)注入集合类型 (9)2、构造器方式装配(constructor注入) (11)3、比较set和构造注入方式 (11)五、复杂装配 (11)1、工厂方式装配 (11)1)静态工厂方式装配 (11)2)实例工厂方式装配 (12)2、自动装配(Autowring Properties) (12)3、bean的定义的继承 (13)4、bean的依赖关系检查 (13)5、scope (14)六、B EAN的生命周期 (14)1、步骤 (14)2、接口介绍 (15)七、事件处理 (16)1、事件监听原理 (16)2、编程步骤 (16)第三章SPRING的AOP (17)一、AOP的概念 (17)1、什么是AOP (17)2、AOP编程的好处 (17)二、AOP相关概念 (17)三、AOP基本原理 (18)四、S PRING的通知(具体的业务逻辑) (18)1、Spring的通知类型 (18)五、切入点(P OINTCUT) (20)1、pointcut (20)接口Pointcut:org.springframework.aop.Pointcut (20)接口Classfilter:org.springframework.aop.ClassFilter (20)接口MethodMather:org.springframework.aop.MethodMatcher (21)接口Advisor:org.springframework.aop.PointcutAdvisor (21)2、预定义切入点 (22)1)静态切入点: (22)2)动态切入点: (24)3)切入点的交叉与合并: (24)4)Introduction(非重点,严重影响性能,慢5到10倍) (24)六、自动代理 (25)1、使用BeanNameAutoProxyCreator进行自动代理 (25)2、DefaultAdvisorAutoProxyCreator (25)第四章SPRING对持久层的支持 (26)一、S PRING对持久层支持采用的策略: (26)二、S PRING对JDBC的支持 (26)Step 1: 配置数据源 (26)方式一:采用Spring内置的数据源(测试用,性能不高) (26)方式二:采用开源数据库产品如DBCP (27)方式三:直接使用容器提供的数据源(如Tomcat,Weblogic,SunAppServer) (27)Step 2: 配置JdbcTemplate模板类(封装了绝大多数数据库操作) (28)Step 3: 配置DAO (28)Step 4: 配置Service (28)三、S PRING对H IBERNATE的支持 (28)Step1:配置数据源 (28)Step2:配置sessionfactory (28)Step3:配置DAO (29)第五章SPRING对事务的支持 (29)一、事务的概念 (29)二、S PRING的事务机制 (29)三、S PRING事务编程 (30)1、整体介绍 (30)2、Spring声明式事务的编程 (30)3、Spring中事务的使用 (32)四、S PRING事务与EJB事务 (33)第六章框架整合 (33)一、SSH (33)二、S PRING与S TRUTS整合 (34)1、前提: (34)2、加载Spring方式: (34)1)采用ContextLoaderListener来创建ApplicationContext: (34)2)采用ContextLoaderPlugIn来创建ApplicationContext (34)3、集成方案 (34)方案一:通过Spring的ActionSupport类 (34)方式二:通过Spring的DelegatingActionProxy类 (35)方式三:通过Spring的DelegatingRequestProcessor类 (35)三、关于S PRING与EJB (36)第一章Spring简介spring in actionspring 技术手册▲精通Spring2.x企业级开发陈雄华一、Spring是什么?1、Spring是一个开源的用于简化企业级开发的分层框架2、分层结构:接口接口表示层业务层持久层域层1)Presentation layer(表示层)(1) 表示逻辑(生成界面代码)(2) 接收请求(3) 处理业务层抛出的异常(4) 负责规则验证(数据格式,数据非空等)(5) 流程控制2)Service layer(服务层/业务层)(1) 封装业务逻辑处理,并且对外暴露接口(2) 负责事务,安全等服务以及数据访问逻辑3)Persistence layer(持久层)提供透明的数据访问和接口(1) 封装数据访问的逻辑,暴露接口(2) 提供方便的数据访问的方案(查询语言,API,映射机制等)4)Domain layer(域层)域层就是一堆实体的集合,包括实体的关系。
spring培训学习笔记
s Spring培训学习笔记spring概述.................................................. 错误!未定义书签。
控制反转,还是依赖注入................................... 错误!未定义书签。
面向方面编程............................................. 错误!未定义书签。
一致性抽象............................................... 错误!未定义书签。
事务管理................................................. 错误!未定义书签。
测试..................................................... 错误!未定义书签。
与其它框架整合........................................... 错误!未定义书签。
控制反转..................................................... 错误!未定义书签。
容器(container) .......................................... 错误!未定义书签。
IoC类型................................................. 错误!未定义书签。
IoC in spring ............................................ 错误!未定义书签。
DI with spring ........................................... 错误!未定义书签。
AOP ......................................................... 错误!未定义书签。
spring课堂笔记
Spring day012008-12-24 田天一、Spring FrameWork概述1、企业级应用开发应注意的内容(1)分层:一般意义上分三层·表示层:1)接收客户端请求2)展示结果·业务层1)封装数据访问的逻辑2)事务、安全、调用数据访问接口·持久层1)封装数据访问的逻辑2)给业务层提供透明的数据访问的方式注:透明:提供完整的API(2)基础代码(中间件服务)基础代码:即基础设施,事务、安全、日志、集成、邮件、消息、任务调度…·通用,与具体业务无关·变化少,实现复杂(3)测试(4)如何解决企业级应用:·完全实现所有的代码(包括基础代码)·J2EE(标准的):用来简化企业级应用的包括JSP、Servlet、EJB、JPA、JMS….·Spring(非标准的)2、Spring是一个开源的,用来简化企业级开发复杂性的分层框架。
3、Spring特点:(1)封装了大量企业级服务(简化了调用企业级应用的代码)(2)提供了一个容器(这个容器可以使得容器中的业务主键可以组装在一起,减少模块之间的耦合性,利于测试、维护并且支持AOP编程,为业务组件提供灵活的中间件服务)(3)Spring框架对应用中的每一层均提供了相应的支持或实现,既可以使用Spring全部功能也可以使用其部分功能,或者集成其他子框架(比如struts。
)(4)Spring是个非侵入式的轻量级框架。
·非侵入式:指应用尽量的少的依赖框架的API4、为什么使用Spring?(1)它可以简化企业级应用的开发(2)它可以方便的集成其他的技术框架(3)使用Spring开发的代码易维护、易测试(4)可以不再使用EJB技术来实现企业级应用二、Spring框架的组成1、SpringCore :核心容器(1)BeanFactory 接口实现(2)作用:提供组件的创建(实例化)、装配(依赖关系)、销毁等基本功能。
spring框架案例学习文档笔记
目录第一课:面向抽象编程 ....................................................................................... 3 第二课:Jdom 的基本使用 ..................................................................................... 3 第三课:模拟Spring 功能 .................................................................................... 4 第四课:搭建sping 的运行环境 . (7)一、 建立一个新的项目 ............................................................................. 7 二、 建立spring 的配置文件 ......................................................................... 7 三、 引入spring 的jar 包........................................................................... 7 四、 测试代码: ................................................................................... 7 五、 注意接口的使用: ............................................................................. 7 第五课:IOC(DI)配置及应用 . (8)一、 什么是IOC 、DI ................................................................................ 8 二、 编辑xml 文件时,没有提示 ...................................................................... 8 三、注入类型(Injecting dependencies) (8)(一) setter 注入类型Setter Injection .......................................................... 8 (二) 构造方法Constructor Injection (9)四、 id 、name .................................................................................... 10 五、 简单属性的注入 .............................................................................. 10 六、 Bean 的作用范围scope ......................................................................... 11 七、 集合注入 .................................................................................... 11 八、自动装配autowire (12)(一) byName .................................................................................. 12 (二) byType .................................................................................. 13 (三) 注意 .................................................................................... 13 九、生命周期 (14)(一) lazy-init/default-lazy-init ............................................................. 14 (二) init-method destroy-method 不要和prototype 一起用(了解) . (14)第六课:annotation 方式Spring (15)一、 开始使用annotation 配置Spring ............................................................... 15 二、@Autowired 、@Qualifier (15)(一) @Autowired .............................................................................. 15 (二) @Qualifier .............................................................................. 16 三、@Resource(重要、推荐) (16)(一) JSR-250 ................................................................................. 16 (二) @Resource . (16)四、 @Componet ................................................................................... 17 五、 @Scope 、@PostConstruct 、@PreDestroy .......................................................... 18 六、注解对应的jar 包 (18)第七课:AOP(面向切面编程) ..........................一、 AOP 概念 .............................二、 利用动态代理实现面向切面编程 19第八课:Spring AOP 配置选项 ........................一、 AOP 配置annotation 方式 ..............(一) 搭建annotation 开发环境 20(二)aspectJ 类库 .....................(三) AOP 的annotation 实例 ............(四)AspectJ 的专业术语 ...............Spring –SSH 整合 学习笔记---wjt276[2010-05-14](五) 织入点语法 (22)(六) Advice (23)(七) Pointcut (25)(八) annotatin方式的AOP实例 (25)二、AOP配置xml方式 (26)三、AOP实现动态代理注意 (27)第九课:DataSource (27)一、Sping配置数据源: (27)二、注入使用 (28)三、dbcp.BasicDataSource (28)第十课 Spring整合Hiberante3 (29)一、Spring配置hibernate3的SessionFactory (29)(一) xml形式的SessionFactory (29)(二) annotation注解方式的SessionFactory (29)二、引入hibernate所需要使用的jar (30)(一) 基本jar (30)(二) 加入annotation功能的jar包 (30)(三) 搭建日志环境并配置显示DDL语句jar包 (30)三、Spring整合hibernate3事务 (30)(一) Annotation注解方式配置事务管理 (30)(二) Spring事务选项 (34)(三) XML文件形式配置Spring事务管理 (36)四、HibernateTemplate (37)(一) HibernateTemplate (37)(二) HibernateDaoSupport (38)第十一课:Spring整合-SSH (39)一、第一步:加入jar包(需要的jar包列表) (39)二、第二步:首先整合Spring + Hibernate (40)三、第三步:再来整合Struts2 (40)四、struts的读常量: (42)第十二课:DTO、VO (42)一、DTO (42)二、VO (42)第十二课:SSH整合存在的问题 (42)一、Jsp中访问Session时,Session已经关闭 (42)二、如果不配置事务,openSessionView出现异常 (43)三、中文乱码问题: (43)第十三课:SSH整合的jar包 (44)一、Struts2 (44)二、Hibernate3.3.2 (44)三、Spring (45)第一课:面向抽象编程原来什么类都是写死的,现在是先建立一个大的标准,然后再各个实体类来实现他们的功能,然后在调用的时候,使用这个标准调用,这样,你们那个来都可以被调用。
Spring课堂笔记
Spring部分学习笔记讲师:梁建全liangjq@目录Spring部分学习笔记 (1)DAY01 (5)一、Spring框架的作用和好处 (5)二、Spring框架对Bean组件的管理 (5)1、使用方法: (5)2、Spring容器对Bean组件的管理 (5)3、Spring框架的IoC机制 (6)A.DI (依赖注入) (6)B.各种类型数据的注入 (7)C.IoC(Inverse of Controller,控制反转) (9)三、AOP概念 (9)1、什么是AOP? (9)2、AOP基本应用 (9)A.引入AOP开发包 (9)B.定义一个Bean组件(方面组件),封装共通处理 (9)C.在applicationContext.xml中定义AOP配置 (9)3、AOP相关概念 (10)4、通知类型 (10)5、切入点表达式 (11)6、AOP练习完成记录用户操作日志示例。
(11)7、编写一个AOP示例,异常处理方面 (13)DAY02 (14)一、Log4j工具介绍 (14)1、体系结构 (14)2、消息级别 (14)二、Spring注解配置 (15)1、组件的自动扫描 (15)2、AOP注解标记 (15)3、(异常处理)案例重构 (15)4、XML和注解两种配置形式 (16)DAY03 (17)一、Spring对数据访问层的支持 (17)1、提供了事务管理 (17)2、提供了DAO实现支持 (17)3、如何整合JDBC技术 (17)4、如何整合Hibernate技术 (19)5、Spring整合Hibernate后,如何使用Hibernate中的Session对象 (21)二、Spring如何与Struts2框架整合 (22)1、添加Struts2框架 (22)2、编写Action,需要使用DAO组件采用DI方式注入 (22)3、Spring容器中定义Action组件,注入DAO (22)4、在struts.xml中定义Action组件和请求配置 (22)5、在web.xml中添加配置,在启动tomcat时,实例化Spring容器 (23)DAY04 (24)一、Spring与Struts2、Hibernate 整合 (24)1、SSH工作流程 (24)二、ssh开发步骤 (25)1、引入开发包 (25)2、编写实体类和映射文件hbm.xml(可以利用MyEclipse工具) (25)3、编写DAO组件 (26)4、在Spring配置文件中定义DAO,SessionFactory,DataSource按以下关系注入 (26)5、添加Struts2配置文件及控制器配置 (27)6、编写Action组件,需要使用Service或DAO时,采用名称匹配规则注入 (27)7、在struts.xml中添加Action组件配置(代码在5、中) (27)8、修改jsp,利用struts2标签完成显示 (27)9、修改web.xml,添加Listener配置,实例化Spring容器 (27)10、按ssh-2图示检查一下流程。
Spring学习笔记(马士兵spring视频笔记)
课程内容1.面向接口(抽象)编程的概念与好处2.IOC/DI的概念与好处a)inversion of controlb)dependency injection3.AOP的概念与好处4.Spring简介5.Spring应用IOC/DI(重要)a)xmlb)annotation6.Spring应用AOP(重要)a)xmlb)annotation7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要)a)opensessionInviewfilter(记住,解决什么问题,怎么解决)8.Spring JDBC面向接口编程(面向抽象编程)1.场景:用户添加2.Spring_0100_AbstractOrientedProgramminga)不是AOP:Aspect Oriented Programming3.好处:灵活什么是IOC(DI),有什么好处1.把自己new的东西改为由容器提供a)初始化具体值b)装配2.好处:灵活装配Spring简介1.项目名称:Spring_0200_IOC_Introduction2.环境搭建a)只用IOCi.spring.jar , jarkata-commons/commons-loggin.jar3.IOC容器a)实例化具体beanb)动态装配4.AOP支持a)安全检查b)管理transactionSpring IOC配置与应用1.FAQ:不给提示:a)window – preferences – myeclipse – xml – xml catalogb)User Specified Entries – addi.Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsdii.URI:file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd iii.Key Type: Schema Locationiv.Key: /schema/beans/spring-beans-2.5.xsd2.注入类型a)Spring_0300_IOC_Injection_Typeb)setter(重要)c)构造方法(可以忘记)d)接口注入(可以忘记)3.id vs. namea)Spring_0400_IOC_Id_Nameb)name可以用特殊字符4.简单属性的注入a)Spring_0500_IOC_SimplePropertyb)<property name=… value=….>5.<bean 中的scope属性a)Spring_0600_IOC_Bean_Scopeb)singleton 单例c)proptotype 每次创建新的对象6.集合注入a)Spring_0700_IOC_Collectionsb)很少用,不重要!参考程序7.自动装配a)Spring_0800_IOC_AutoWireb)byNamec)byTyped)如果所有的bean都用同一种,可以使用beans的属性:default-autowire8.生命周期a)Spring_0900_IOC_Life_Cycleb)lazy-init (不重要)c)init-method destroy-methd 不要和prototype一起用(了解)9.Annotation第一步:a)修改xml文件,参考文档<context:annotation-config />10.@Autowireda)默认按类型by typeb)如果想用byName,使用@Qulifierc)写在private field(第三种注入形式)(不建议,破坏封装)d)如果写在set上,@qualifier需要写在参数上11.@Resource(重要)a)加入:j2ee/common-annotations.jarb)默认按名称,名称找不到,按类型c)可以指定特定名称d)推荐使用e)不足:如果没有源码,就无法运用annotation,只能使用xml12.@Component @Service @Controller @Repositorya)初始化的名字默认为类名首字母小写b)可以指定初始化bean的名字13.@Scope14.@PostConstruct = init-method; @PreDestroy = destroy-method; 什么是AOP1.面向切面编程Aspect-Oriented-Programminga)是对面向对象的思维方式的有力补充2.Spring_1400_AOP_Introduction3.好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码a)Filterb)Struts2的interceptor4.概念:a)JoinPoint 释意:切面与原方法交接点即切入点b)PointCut 释意:切入点集合c)Aspect(切面)释意:可理解为代理类前说明d)Advice 释意:可理解为代理方法前说明例如@Beforee)Target 释意:被代理对象被织入对象f)Weave 释意:织入Spring AOP配置与应用1.两种方式:a)使用Annotationb)使用xml2.Annotationa)加上对应的xsd文件spring-aop.xsdb)beans.xml <aop:aspectj-autoproxy />c)此时就可以解析对应的Annotation了d)建立我们的拦截类e)用@Aspect注解这个类f)建立处理方法g)用@Before来注解方法h)写明白切入点(execution …….)i)让spring对我们的拦截器类进行管理@Component3.常见的Annotation:a)@Pointcut 切入点声明以供其他方法使用, 例子如下:@Aspect@Componentpublic class LogInterceptor {@Pointcut("execution(public * com.bjsxt.dao..*.*(..))")public void myMethod(){}@Around("myMethod()")public void before(ProceedingJoinPoint pjp) throws Throwable{System.out.println("method before");pjp.proceed();}@AfterReturning("myMethod()")public void afterReturning() throws Throwable{System.out.println("method afterReturning");}@After("myMethod()")public void afterFinily() throws Throwable{System.out.println("method end");}}b)@Before 发放执行之前织入c)@AfterReturning 方法正常执行完返回之后织入(无异常)d)@AfterThrowing 方法抛出异常后织入e)@After 类似异常的finallyf)@Around 环绕类似filter , 如需继续往下执行则需要像filter中执行FilterChain.doFilter(..)对象一样执行ProceedingJoinPoint.proceed()方可,例子如下:@Around("execution(* com.bjsxt.dao..*.*(..))")public void before(ProceedingJoinPoint pjp) throws Throwable{System.out.println("method start");pjp.proceed();//类似FilterChain.doFilter(..)告诉jvm继续向下执行}4.织入点语法a)void !voidb)参考文档(* ..)如果execution(* com.bjsxt.dao..*.*(..))中声明的方法不是接口实现则无法使用AOP实现动态代理,此时可引入包” cglib-nodep-2.1_3.jar”后有spring自动将普通类在jvm中编译为接口实现类,从而打到可正常使用AOP的目的.5.xml配置AOPa)把interceptor对象初始化b)<aop:configi.<aop:aspect …..1.<aop:pointcut2.<aop:before例子:<bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean><aop:config><!-- 配置一个切面 --><aop:aspect id="point" ref="logInterceptor"><!-- 配置切入点,指定切入点表达式 --><!-- 此句也可放到 aop:aspect标签外依然有效--><aop:pointcutexpression="execution(public * com.bjsxt.service..*.*(..))"id="myMethod" /><!-- 应用前置通知 --><aop:before method="before" pointcut-ref="myMethod" /><!-- 应用环绕通知需指定向下进行 --><aop:around method="around" pointcut-ref="myMethod" /><!-- 应用后通知 --><aop:after-returning method="afterReturning"pointcut-ref="myMethod" /><!-- 应用抛出异常后通知 --><aop:after-throwing method="afterThrowing"pointcut-ref="myMethod" /><!-- 应用最终通知 --><aop:after method="afterFinily"pointcut="execution(public * om.bjsxt.service..*.*(..))" /></aop:aspect></aop:config>Spring整合Hibernate1.Spring 指定datasourcea)参考文档,找dbcp.BasicDataSourcei.c3p0ii.dbcpiii.proxoolb)在DAO或者Service中注入dataSourcec)在Spring中可以使用PropertyPlaceHolderConfigure来读取Properties文件的内容2.Spring整合Hibernatea)<bean .. AnnotationSessionFactoryBean>i.<property dataSourceii.<annotatedClassesb)引入hibernate 系列jar包c)User上加Annotationd)UserDAO或者UserServie 注入SessionFactorye)jar包问题一个一个解决3.声明式的事务管理a)事务加在DAO层还是Service层?b)annotationi.加入annotation.xsdii.加入txManager beaniii.<tx:annotation-driven例如: <bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><tx:annotation-driven transaction-manager="transactionManager"/> iv.在需要事务的方法上加:@Transactionalv.需要注意,Hibernate获得session时要使用SessionFactory.getCurrentSession 不能使用OpenSessionc)@Transactional详解i.什么时候rollback1.运行期异常,非运行期异常不会触发rollback2.必须uncheck (没有catch)3.不管什么异常,只要你catch了,spring就会放弃管理4.事务传播特性:propagation_required例如: @Transactional(propagation=Propagation.REQUIRED)等同于(@Transactional)作用,一个方法声明了@Transactional事务后,其内再调用的方法不需要再声明@Transactional.5.read_only例如: @Transactional(propagation=Propagation.REQUIRED,readOnly=true)当方法声明readOnly=true时,该方法及其调用的方法内都不执行insert update等d)xml(推荐,可以同时配置好多方法)i.<bean txmanagerii.<aop:config1.<aop:pointcut2.<aop:advisor pointcut-ref advice-refiii.<tx:advice: id transaction-manager =iv.<property name="packagesToScan"> 可定义扫描目标包下所有实体类例如: <bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> <prop key="hibernate.show_sql">true</prop></props></property><!--<property name="annotatedClasses"><list><value>com.bjsxt.model.TestUser</value><value>com.bjsxt.model.Log</value></list></property>--><!-- 将参数名称设为packagesToScan 可定义扫描目标包下所有实体类--><property name="packagesToScan"><list><value>com.bjsxt.model</value></list></property></bean>//事务管理@transactional的注入<bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref bean="sessionFactory" /></property></bean>//定义字符串“execution()”为一个变量名,简化<aop:config><aop:pointcutexpression="execution(public * com.bjsxt.service..*.*(..))"id="myServiceMethod" /><aop:advisor pointcut-ref="myServiceMethod" advice-ref="txAdvice"/></aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes><tx:method name="save*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="cancel*" propagation="REQUIRED" /><tx:method name="*" read-only="true" /></tx:attributes></tx:advice>e)HibernateTemplate、HibernateCallback、HibernateDaoSupport(不重要)介绍i.设计模式:Template Method(模板方法)ii.Callback:回调/钩子函数iii.第一种:(建议)1.在spring中初始化HibernateTemplate,注入sessionFactory<bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /></bean>2.DAO里注入HibernateTemplateprivate HibernateTemplate hibernateTemplate;@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate;}3.save写getHibernateTemplate.save();public void save(TestUser testUser) {hibernateTemplate.save(testUser);}iv.第二种:1.从HibernateDaoSupport继承(此方法不好用可忽略)2.必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的例如:首先,新建SuperDAOImpl类(使用Annotation注入--@Component):@Componentpublic class SuperDAOImpl {private HibernateTemplate hibernateTemplate; //此处定义由spring注入管理public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate;}}此时,xml中必须要有:<bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /></bean>或者,SuperDAOImpl类写成下面代码:@Componentpublic class SuperDAOImpl extends HibernateDaoSupport {@Resource(name="sessionFactory")public void setSuperHibernateTemplate(SessionFactory sessionFactory) {super.setSessionFactory(sessionFactory);}}对应的xml中则可省略<bean id="hibernateTemplate"………部分只要包含<bean id="sessionFactory"……..部分即可最后,其他类继承SuperDaoImpl类后便可直接使用HibernateTemplate@Component("u")public class UserDAOImpl extends SuperDAOImpl implements UserDAO {public void save(TestUser testUser) {this.getHibernateTemplate().save(testUser);}}f)spring整合hibernate的时候使用packagesToScan属性,可以让spring自动扫描对应包下面的实体类Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2a)将这些所有的jar包保存到一个位置,使用的时候直接copy3.步骤a)加入jar包b)首先整合Spring + Hibernatei.建立对应的package1.dao / dao.impl / model / service / service.impl/ testii.建立对应的接口与类框架1.S2SH_01iii.建立spring的配置文件(建议自己保留一份经常使用的配置文件,以后用到的时候直接copy改)iv.建立数据库v.加入Hibernate注解1.在实体类上加相应注解@Entity @Id等在字段属性的get方法上加--@Column(name = "表字段名")2.在beans配置文件配置对应的实体类,使之受管vi.写dao service的实现vii.加入Spring注解1.在对应Service及DAO实现中加入@Component,让spring对其初始化2.在Service上加入@Transactional或者使用xml方式(此处建议后者,因为更简单)3.在DAO中注入sessionFactory4.在Service中注入DAO5.写DAO与Service的实现viii.写测试c)整合Struts2i.结合点:Struts2的Action由Spring产生ii.步骤:1.修改web.xml加入struts的filter如下:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>2.再加入spring的listener,这样的话,webapp一旦启动,spring容器就初始化了如下:<!-- 指定由spring初始化加载xml配置文件spring与struts结合必备--><listener><listener-class>org.springframework.web.context.ContextLoaderListener<!-- 默认寻找xml路径:WEB-INF/applicationContext.xml --> </listener-class></listener><!--整个应用的参数服务启动时读取.可指定spring初始化文件路径位置--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring/*applicationContext.xml</param-value></context-param>3.规划struts的action和jsp展现4.加入struts.xmla)修改配置,由spring替代struts产生Action对象5.修改action配置a)把类名改为bean对象的名称,这个时候就可以使用首字母小写了b)@Scope(―prototype‖)不要忘记iii.struts的读常量:1.struts-default.xml2.struts-plugin.xml3.struts.xml4.struts.properties5.web.xmliv.中文问题:1.Struts2.1.8已经修正,只需要改i18n.encoding = gbk2.使用spring的characterencoding例:<!-- 过滤器相关配置======== 字符编码过滤======== --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter>3.需要严格注意filter的顺序4.需要加到Struts2的filter前面zyInitializationException1.OpenSessionInViewFilter2.需要严格顺序问题3.需要加到struts2的filter前面附:1.@Autowired 与@Resource 都可以用来装配bean. 都可以写在属性定义上,或写在set方法上@Autowired (srping提供的) 默认按类型装配@Resource ( j2ee提供的) 默认按名称装配,当找不到(不写name属性)名称匹配的bean再按类型装配. 可以通过@Resource(name="beanName") 指定被注入的bean的名称, 要是指定了name属性, 就用字段名去做name属性值,一般不用写name属性.@Resource(name="beanName")指定了name属性,按名称注入但没找到bean, 就不会再按类型装配了.@Autowired 与@Resource可作用在属性定义上, 就不用写set方法了(此方法不提倡);2.a.Action类前加@Component,则Action可由spring来管理,例子如下:Action中写:@Component("u") //spring管理注解@Scope("prototype") //多态public class UserAction extends ActionSupport implements ModelDriven{//内部属性需要有get/set方法且需要set方法前加@Resource或@Autowired }Struts2配置文件中写<action name="u" class="u">Jsp中<form method="post" action="u.do" >b.Action中也可不加@Component,Action由struts2-spring-plugin管理。
Spring学习笔记
Spring学习笔记Java相关课程系列笔记之十五笔记内容说明Spring(梁建全老师主讲,占笔记内容100%);目录一、Spring概述 (1)1.1 Spring框架的作用 (1)1.2 Spring框架的优点 (1)1.3 Spring框架的容器 (1)二、Spring容器的基本应用 (2)2.1如何将一个Bean组件交给Spring容器 (2)2.2如何获取Spring容器对象和Bean对象 (2)2.3如何控制对象创建的模式 (2)2.4 Bean对象创建的时机 (2)2.5为Bean对象执行初始化和销毁方法 (2)2.6案例:Spring框架的使用以及 2.1节-2.5节整合测试 (3)三、Spring框架IoC特性 (5)3.1 IoC概念 (5)3.2 DI概念 (5)3.3案例:测试IoC(set注入) (5)3.4案例:测试IoC(构造注入) (6)3.5案例:不用JDBC访问数据库,而是采用Hibernate访问 (6)四、Spring中各种类型的数据注入 (7)4.1 Bean对象注入 (7)4.2基本数据的注入 (7)4.3集合的注入 (7)4.4案例:各类数据注入 (7)五、AOP概念 (10)5.1什么是AOP (10)5.2 AOP和OOP的区别 (10)5.3 AOP相关术语 (10)5.4案例:AOP的使用,模拟某些组件需要记录日志的功能 (11)5.5通知类型 (11)5.6切入点 (12)5.7案例:环绕通知,修改 5.4案例使之动态显示所执行的操作 (12)5.8案例:利用AOP实现异常处理,将异常信息写入文件 (13)六、Log4j日志记录工具 (14)6.1 Log4j介绍 (14)6.2 Log4j的使用 (14)6.3案例:修改 5.8案例,使用Log4j记录日志 (15)七、Spring注解配置 (16)7.1组件扫描功能 (16)7.2组件扫描的使用方法 (16)7.3注入注解标记使用方法 (17)7.4 AOP注解标记使用方法 (17)八、Spring对数据访问技术的支持 (19)8.1 Spring提供了统一的异常处理类型 (19)8.2 Spring提供了编写DAO的支持类 (19)8.3 Spring提供了声明式事务管理方法 (19)8.4 Spring框架如何使用JDBC技术 (19)8.5连接池优点 (22)8.6 Spring框架如何使用Hibernate技术 (22)8.7 Spring+Hibernate如何使用Session、Query等对象 (25)8.8 Spring框架和Struts2整合应用 (25)8.9案例:采用SSH结构重构资费管理模块 (27)九、整合开发包 struts-spring-plugin.jar (32)9.1 Struts2创建对象的方式 (32)9.2 struts-spring-pligin.jar创建对象的方式 (32)9.3 struts-spring-plugin.jar的内部实现 (32)9.4原理图 1 (32)9.5原理图 2 (33)9.6注意事项 (33)9.7注入规则 (33)十、Spring的事务管理 (34)10.1声明式事务管理(基于配置方式实现事务控制) (34)10.2编程式事务管理(基于Java编程实现事务控制),不推荐用! (35)10.3 Spring中常用的事务类型 (35)十一、Spring的MVC (37)11.1 Spring MVC的体系结构 (37)11.2 Spring MVC的工作流程 (37)11.3案例:简易登录(基于XML配置,不推荐使用) (37)11.4案例:修改11.3案例(基于注解配置,推荐使用) (39)十二、其他注意事项 (41)12.1 Spring的核心模块 (41)12.2表单中action属性的相对、绝对路径问题 (41)12.3用SSH重构NetCTOSS项目模块的步骤 (41)一、Spring概述我们学习Spring框架的最终目的是用它整合Struts2、Hibernate框架(SSH)。
Spring笔记
Spring 学习笔记1.Spring的技术核心?。
Spring 是一个开源的:控制反转(Inversion of control )IOC ,依赖注入(Dependency Injection )和面向切面(Aop)的框架,它主要的目的是简化企业的开发。
2.控制反转?所谓控制反转就是:应用本身不负责依赖对象的创建与维护,依赖对象的创建与维护是有外部容器负责的。
这样控制权就有应用转向了外部容器,控制权的转移就是所谓的控制反转。
3.依赖注入?所谓依赖注入就是指:在运行期由外部容器动态的将依赖对象注入到组件中。
4 .为什么要使用Spring 呢?<a>可以降低组件之间的耦合度,实现软件各层之间的解耦;Control----→Service----→DAO<b>使用Spring 容器可以使用它提供的众多服务:事务管理服务,JMS服务,Spring Core服务,持久化服务,其它......事务管理:不需要手工控制事物<c>容器提供单利模式支持;<d>容器提供了AOP技术,利用它很容易实现如:权限拦截,运行期监控等功能。
<e>容器提供了很多的辅助类,使用这些类能够加快应用的开发,如:Jdbc Template,Hibernate Template 。
<f>Spring对主流的应用框架提供了支持如:Hibernate ,JPA , Struts.等。
4.实例化Spring 容器?两种方式A : 在类路径下寻找配置文件来实例化Spring容器。
ApplicationContext ctx = new ClassPathXmlApplicationContext(“config-path”);B:在文件系统路径下寻找配置文件来实例化Spring 容器;ApplicationContext ctx = new FileSystemXmlApplicationContext(“d:\\bean.xml”);注:第二种方式通常在本地测试时用,因为每个应用的配置在不同机器上会不同。
spring学习课堂笔记
在JavaWeb项目中使用:
session:
request:
spring Bean对象初始化和销毁
在applicationContext.xml设置销毁和初始化
<bean init-method="init" destroy-method="destroy">
<property name="student3" ref="student3"/>
parent:在父对象中查找
使用容器加载多个配置文件
(1)数组方式:
new ClassPathXmlApplicationContext(new String[] {
(c)设置全局default-lazy-init="true"
整个配置文件中对象都实例化延迟
<beans ...
default-lazy-init="true">
</beans>
注意:在使用定时器的时候,不能使用lazy-init="true"
F支持ClassPath搜索器
classpath:applicationContext.xml
3、spring国际化
FileSystemXmlApplicationContext支持国际化
spring bean对象生命周期
通过lazy-init可以改变对象实例化时机
DI主要是IOC的一个实现
IUserDao iuserDao= new UserDaoImp();
对象依赖关系让容器管理,程序员不用关系类与类之间
Spring思想注入依赖学习笔记
本人总结了一些ssh常见的面试题例举如下强调在回答的时候不要光回答概念,要思维扩散性的讲些相关的东西spring 的优点?1.降低了组件之间的耦合性,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵入式设计,代码的污染极低8.独立于各种应用服务器9.spring的DI机制降低了业务对象替换的复杂性10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部什么是DI机制?依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。
但在spring中创建被调用者的工作不再由调用者来完成,因此称为控制反转。
创建被调用者的工作由spring来完成,然后注入调用者因此也称为依赖注入。
spring以动态灵活的方式来管理对象,注入的两种方式,设置注入和构造注入。
设置注入的优点:直观,自然构造注入的优点:可以在构造器中决定依赖关系的顺序。
什么是AOP?面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面1.面向切面编程提供声明式事务管理2.spring支持用户自定义的切面面向切面编程(aop)是对面向对象编程(oop)的补充,面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。
AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop 是动态的抽象,是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。
Spring学习笔记(一)
Spring学习笔记(⼀)Spring学习笔记(⼀)这是⼀个沉淀的过程,⼤概第⼀次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了⼀个很不好的学习习惯,就是“照猫画虎”。
别⼈做什么,照着样⼦就是了,没有任何的思考,这样的学习习惯肯定不会⾛太远。
现在我产⽣很多疑惑,这是什么?为什么这么做?如何做的更好?因此这次笔记的主题就是《这是什么?》1. spring框架概述1.1 什么是springSpring是⼀个开源框架,Spring是于2003 年兴起的⼀个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍⽣⽽来。
它是为了解决企业应⽤开发的复杂性⽽创建的。
框架的主要优势之⼀就是其分层架构,分层架构允许使⽤者选择使⽤哪⼀个组件,同时为 J2EE 应⽤程序开发提供集成的框架。
Spring使⽤基本的JavaBean 来完成以前只可能由EJB完成的事情。
然⽽,Spring的⽤途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的⾓度⽽⾔,任何Java应⽤都可以从Spring中受益。
Spring的核⼼是控制反转(IoC)和⾯向切⾯(AOP)。
简单来说,Spring是⼀个分层的JavaSE/EE full-stack(⼀站式) 轻量级开源框架。
[^摘⾃]: (百度百科)轻量级:与EJB对⽐,依赖资源少,销毁的资源少。
分层:⼀站式,每⼀个层都提供的解决⽅案1.2 spring由来Expert One-to-One J2EE Design and DevelopmentExpert One-to-One J2EE Development without EJB1.3 spring核⼼Spring的核⼼是控制反转(IoC)和⾯向切⾯(AOP)1.4 spring优点⽅便解耦,简化开发(⾼内聚低耦合)Spring就是⼀个⼤⼯⼚(容器),可以将所有对象创建和依赖关系维护,交给Spring管理spring⼯⼚是⽤于⽣成beanAOP编程的⽀持Spring提供⾯向切⾯编程,可以⽅便的实现对程序进⾏权限拦截、运⾏监控等功能声明式事务的⽀持只需要通过配置就可以完成对事务的管理,⽽⽆需⼿动编程⽅便程序的测试Spring对Junit4⽀持,可以通过注解⽅便的测试Spring程序⽅便集成各种优秀框架Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接⽀持降低JavaEE API的使⽤难度Spring 对JavaEE开发中⾮常难⽤的⼀些API(JDBC、JavaMail、远程调⽤等),都提供了封装,使这些API应⽤难度⼤⼤降低1.5 spring体系结构Spring框架是⼀个分层架构,它包含⼀系列的功能要素并被分为⼤约20个模块。
Spring学习心得
Spring学习心得(转)最近有人问我学习Spring的经验。
心中不免有些惭愧,本来以为自己对Spring 算比较精通啦,但最近看Professional Java development with SpringFramework,发现其实自己还有好多东西不知道。
不过既然有人问起,就大概谈一下体会吧,由于我自己的途径与下面所列的步骤还是有些差距的(主要是当时关于Spring的书和参考资料太少了),而且每个人的学习方式也会不同,所以只能作为参考了。
一一、首先Java的基础、面向对象的基础和设计模式的基础知识是必不可少的。
如果连这些基础知道都不够扎实的话,我建议还是先去补补课。
关于设计模式我觉得不用学太多,但以下三个模式是学习Spring必不可少的:factory模式(包括简单工厂和抽象工厂),Strategy模式,Template method模式。
如果不掌握这些你就根本没法领悟Spring的精髓,只能依样画葫芦地照搬,这是很可怕的事。
关于这方面的书的建议已经够多的,我就不说了。
我这里强烈建议的书可能让人有点意外,那就是Expert one on one J2EE design and development的第四章,这一章不仅仅是Spring初学者,而是任何搞Java开发的人必读的一章。
经典!二、接下可以看一些Spring的入门书籍其实我自己没怎么看过这方面的书,我当时只看过Spring的reference,不过现在这方面的书好象多的是,而Spring reference看起来还是有些吃力的。
JavaEye上很多人建议夏昕的Spring开发指南,据说入门很容易。
另外的入门书应该是Spring live或Spring in action。
我大概扫了一下,Spring live是一本只讲怎么做而不讲为什么的书,我不太喜欢(偶尔参考一下倒不错),不过有些人特别喜欢这样的书,看自己的个人爱好吧。
三、研究几个用Spring做的开源项目理论还是要与实际结合,所以看完书后是要看实际的项目的。
Spring笔记——将spring进行到底DOC
chapter01 Spring简介一、Spring是什么?业务层框架的动机--快速构建Java 企业应用,框架简化开发过程,提供公共服务和便利的工具1)使组件松散耦合,组件依赖可配置2)提供公共服务:比如事务、安全3)简化使用j2ee 的技术在了解Spring之前,我们来了解在Java EE框架下企业级开发采用EJB框架的一些不足:(1) EJB太笨重,而且Entity EJB不能脱离容器(2) 企业级服务使用困难(3) 开发的复杂度太高(4) 侵入式方案,EJB要使用特定的接口因此,Spring应运而生。
3 Spring 的3个核心特性IOC --- Inverse of control使得业务组件都处在框架的管理之下框架可以管理组件的创建和依赖关系框架可以提供可以配置的服务AOPAspect Oreinted Programming在不修改组件的前提下,为组件提供扩展的服务简化对j2ee技术的使用更方便的使用j2ee 的技术jdbc / orm / strutsSpring是一个开源的用于简化采用Java语言开发企业级程序的一个分层的框架。
关于程序的分层结构:1、Presentation layer(表示层)(1) 表示逻辑(生成界面代码)(2) 接收请求(3) 处理业务层抛出的异常(4) 负责规则验证(数据格式,数据非空等)(5) 流程控制2、Service layer(服务层/业务层)(1) 封装业务逻辑处理,并且对外暴露接口(2) 负责事务,安全等服务3、Persistence layer(持久层)(1) 封装数据访问的逻辑,暴露接口(2) 提供方便的数据访问的方案(查询语言,API,映射机制等)Domain layer(域层)(1) 业务对象以及业务关系的表示(2) 处理简单的业务逻辑(3) 域层的对象可以穿越表示层,业务层,持久层二、Spring的作用为什么要使用Spring?(1) 简化企业级开发①封装了大部分的企业级服务,提供了更好的访问这些服务的方式②提供了IOC,AOP功能的容器,方便编程(2) 遵循Spring框架的应用程序,一定是设计良好的,针对接口编程,这样就简化了企业级程序的设计。
spring框架案例学习文档笔记
(一) 搭建annotation开发环境....................................................................................................... 错误!未定义书签。
(二) aspectJ类库 ............................................................................................................................. 错误!未定义书签。
(三) AOP的annotation实例 .......................................................................................................... 错误!未定义书签。
(四) AspectJ的专业术语 ................................................................................................................. 错误!未定义书签。
(五) 织入点语法 .............................................................................................................................. 错误!未定义书签。
(六) Advice ....................................................................................................................................... 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在类里安Ctrl点击ClassPathXmlApplicationContext 进入 点击Attach Source点External File
选择的是spring-framework的包在dis上面 关联jar关了再开 就可见源代码 (未实行)
或者用applicationContext-*.xml
日期型注入比较麻烦,在xml文件里注入的都是字符串,要用日期型的用属性编辑器
可以注入map set 数组 字符串 整形 List ,日期型比较麻烦,数组输出的循环
测试类代码
public class spTest extends TestCase {
}
public void Test(){
go bean=(go)ctx.getBean("bean"); //JavaBean 对象名=(转换为javaBean)ctx对象.获得bean(xml里的Bean名);
System.out.println(bean.getStrValue()); //输出字符串
</map>
</property>
<property name="setValue"> //注入set
<set>
<value>set1</value>
<value>set2</value>
<property name="listValue"> //注入list
<list>
<value>list1</value>
<value>list2</value>
</list>
</list>
</property>
</bean>
JavaBean文件内容
private String strValue;
private int intValue;
private Map mapValue;
private Set setValue;
新建类继承 Superclass:项目点击Browse输入testc 选择 TestCase
添加方法右键 Source-Override/Implement Methods--setUp方法
新建void方法
执行点开类名+到Test()方法右键执行 类似执行有main方法的类一样
}
}
}
applicationContext.xml 文件内容
<bean id="bean" class="com.wb.sp.formbean.go" >
<property name="strValue" value="ppppp"/>
<property name="intValue" value="12345"/>
String []pp=bean.getArrayValue(); //输出数组
for(int i=0;i< bean.getArrayValue().length;i++){
System.out.println(pp[i]);
在spring学习笔记的基础上加了log4j 和junit单元测试
加入 log4j.jar 复制来 log4j.properties 可修改
单元测试 类名spTest
导入jar包 点击spring右键configure 进入Build Path 添加Add External..找到junit.jar
private BeanFactory ctx;
@Override //ctx经常用到,就用这个方法
protected void setUp() throws Exception {
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
</set>
</property>
<property name="arrayValue"> //注入数组
<list>
<value>array1</value>
<value>array2</value>
private String []arrayValue;
private List listValue;
</property>
<property name="mapValue"> //注入map
<map>
<entry key="k1" value="map1"/>
<entry key="k2" value="map2"/>