马士兵Spring课堂笔记(超级详细版)
- 格式:doc
- 大小:696.00 KB
- 文档页数:31
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)二、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)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是一个开源的用于简化采用Java语言开发企业级程序的一个分层的框架2、分层结构:表示层业务层持久层1)Presentation layer(表示层)(1) 表示逻辑(生成界面代码)(2) 接收请求(3) 处理业务层抛出的异常(4) 负责规则验证(数据格式,数据非空等)(5) 流程控制2)Service layer(服务层/业务层)(1) 封装业务逻辑处理,并且对外暴露接口(2) 负责事务,安全等服务以及数据访问逻辑3)Persistence layer(持久层)提供透明的数据访问和接口(1) 封装数据访问的逻辑,暴露接口(2) 提供方便的数据访问的方案(查询语言,API,映射机制等)4)Domain layer(域层)域层就是一堆实体的集合,包括实体的关系。
马士兵hibernate学习笔记(文字整理版)课程容 (5)1 HelloWorld (5)2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping (5)3 常见的0/R框架(了解) (5)4 hibernate基础配置(重点) (5)5 ID生成策略(重点 AUTO) (5)6 Hibernate核心开发接口介绍(重点) (5)7 对象的三种状态(了解) (5)8 关系映射(重点) (5)9 Hibernate査询(HQL) (5)10 在Struts基础上继续完善BBS200 (5)11 性能优化(重点) (5)12 补充话题 (5)风格 (5)1 先脉络,后细节 (5)2 先操作,后原理 (5)3 重Annotation,轻xml配置文件 (5)资源 (5)1 . (5)2 hibernate zh_CN文档 (5)3 hibernate annotation references (5)环境准备 (5)1 下载hibernate-distribution-3.3.2.GA-dist (5)2 下载hibernate-annotations-3[1].4.0.GA (5)3 注意阅读hibernate compatibility matrix(hibernate download) (5)4 下载slf4jl.5.8 (6)Hibernate HelloWorld (6)1 建立新java 项目,名为hibernate_0100_HelloWorld (6)2 学习建User-library-hibernate,并加入相应的jar包 (6)3 引入mysql的JDBC驱动包 (6)4 在mysql中建立对应的数据库以及表 (6)5 建立hibernate 配置文件hibernate.cfg.xml (6)6 建立Student 类 (6)7 建立Student 映射文件 Student.hbm.xml (6)8 将映射文件加入到hibernate.cfg.xml中 (6)9 写测试类Main,在Main中对Student对象进行直接的存储测试 (6)10 FAQ: (6)11 Note: (6)12 建立能力 (7)建立 Annotation 版本的 HelloWorld (7)1 创建teacher 表,create table teacher (id int primary key, name varhcar(20), title varchar(lO)); (7)2 创建Teacher 类 (7)3 在hibernate lib 中加入annotation的jar包 (7)4 参考Annotaion文档建立对应的注解 (7)5 在hibernate.cfg.xml中建立映射<mapping class:.../〉 . (7)6 参考文裆进行测试(注意文裆中缺少configure()的小bug) (7)7 FAQ: 不给提示 (7)What is and Why 0/R Mapping (7)1 JDBC操作数据库很繁琐 (7)2 Sql语句编写并不是面向对象的 (7)3 可以在对象和关系表之间建立关联来简化编程 (7)4 0/R Mapping 简化编程 (7)5 0/R Mapping跨越数据库平台 (7)6 Hibernate_0200_OR_Mapping_Simulation (7)0/R Mapping Frameworks (7)1 hibernate (7)2 toplink (8)3 jdo (8)4 JPA (8)Hibernate基础配置 (8)1 对应项目:Hibernate_0300_BasicConfiguration (8)2 介绍MSQL的图形化客户端 (8)3 hibernate.cfg.xml: hbni2ddl.auto (8)4 搭建日志环境并配置显示DDL语句 (8)5 搭建jUnit环境 (8)6 hibernate.cfg.xml:show_sql (8)7 hibernate.cfg.xml:format_sql (8)8 表名和类名不同,对表名进行配置 (8)9 字段名和属性相同 (8)10 字段名和属性名不同 (8)11 不需要psersistence的字段(不用列) (8)12 映射日期与时间类型,指定时间精度 (8)13 映射枚举类型( 比较少用) (9)14 字段映射的位置(field或者get方法) (9)15 Lob (9)16 课外:CLOBBLOB类型的数据存取 (9)17 课外:Hibernate自定义数据类型 (9)18 hibernate 类型 (9)ID生成策略 (9)1 对应项目:hibernate_0400_ID (9)2 注意: (9)3 xml生成id (9)4 注解方式:GeneratedValue (9)5 FAQ; (10)6 联合主键 (10)核心幵发接口介绍 (12)1 hibernate_0500_CoreAPI (12)2 Hibernate API文档需要单独下载 (12)3 Configuration (12)4 SessoinFactor (12)5 Session (12)6 SchemaExport (自动建表) (13)7 Query 接口 (13)8 Note: (13)三种对象状态 (14)1 上一个 project (14)2 三种状态的区分关键在于 (14)3 三种状态: (14)4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比如改变属性的 (14)关系映射(重要) (15)对象之间的关系 (15)1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 (15)2 简化问题: (15)3 —对一 (15)4 —对多 (15)5 组件映射 (15)一对一关联 (16)1 一对一单向外键关联 (16)2 一对一双向外键关联 (16)3 一对一单向主键关联(不重要) (17)4 一对一双向主键关联(不重要) (17)5 联合主键 (17)组件映射 (17)1 项目:hibernate_1100_component (17)2 对象关系:一个对象是另外一个对象的一部分 (17)3 数据库表:一表 (17)4 annotation: Embeddable Embbeded (17)5 xml: 使用<component,例如: (18)多对一与一对多 (18)1 多对一单向关联 (18)2 一对多单向关联 (19)3 一对多(多对一)双向关联 (19)多对多 (20)1 单向关联: (20)2 双向关联: (21)关联关系中的CRUD_Cascade_Fetch (21)1 hibernate_1700_one2many_many2one_bi_crud (21)2 设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管) (21)3 cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 (21)4 铁律:双向关系在程序中要设定双向关联 (22)5 铁律:双向mappedBy (22)6 fetch (22)7 Update时ManyToOne()中的cascade参数关系 (22)8 Delete时ManyToOne()中的cascade关系 (22)9 O/RMapping 编程模型 (23)10 要想删除或者更新先做load,除了精确知道ID之外 (23)11 如果想消除关联关系,先设定关系为null.再删除对应记录,如果不删记录,该记录变成垃圾数据 (23)12 练习:多对多的CRUD (23)关系映射总结 (24)1 什么样的关系,设计什么样的表,进行什么样的映射 (24)2 CRUD,按照自然的理解即可(动手测试) (24)集合映射(不太重要) (24)1 项目名称:hibernate_1800_Collections_Mapping (24)2 Set (24)3 List (与Set差不多多个OrderBy) (24)4 Map (24)继承映射(不太重要) (24)1 三种方式 (24)作业: (24)1 学生课程、分数的设计(重要) (24)2 设计: (25)3 树状结构的设计(至关重要) (25)Hibernate 查询(Query Language) (26)HQL vs EJBQL (26)1 NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Query By Example)" 262 总结:QL应该和导航关系结合,共同为査询提供服务。
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记录日志 (14)七、Spring注解配置 (16)7.1组件扫描功能 (16)7.2组件扫描的使用方法 (16)7.3注入注解标记使用方法 (17)7.4 AOP注解标记使用方法 (17)八、Spring对数据访问技术的支持 (19)8.1 Spring提供了统一的异常处理类型 (19)18.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 (36)11.1 Spring MVC的体系结构 (36)11.2 Spring MVC的工作流程 (36)11.3案例:简易登录(基于XML配置,不推荐使用) (36)11.4案例:修改11.3案例(基于注解配置,推荐使用) (38)十二、其他注意事项 (40)12.1 Spring的核心模块 (40)12.2表单中action属性的相对、绝对路径问题 (40)12.3用SSH重构NetCTOSS项目模块的步骤 (40)2Spring概述我们学习Spring框架的最终目的是用它整合Struts2、Hibernate框架(SSH)。
马士兵vip课笔记
马士兵VIP课笔记
1. 课程概述
马士兵的VIP课程是一个全面的编程培训项目,涵盖了从基础到高级的各类编程知识和技能。
该课程强调实战编程,注重培养学员的实际项目开发能力。
通过学习此课程,学员可以掌握多种编程语言和技术,为未来的职业发展打下坚实的基础。
2. 课程内容
•基础概念:课程首先介绍了编程的基本概念,如变量、数据类型、控制结构等。
•面向对象编程:深入探讨了面向对象编程的概念,包括类、对象、继承和多态等。
•高级编程技术:涵盖了如泛型、反射、异步编程等高级编程技术。
•框架与库:介绍了多个主流的编程框架和库,如Spring、Django等。
•实战项目:课程以多个实战项目作为结尾,让学员在实际操作中巩固所学知识。
3. 课程特色
•实战导向:课程强调实战编程,注重培养学员解决实际问题的能力。
•内容全面:课程内容涵盖了从基础到高级的各类编程知识和技能,满足不同层次学员的需求。
•互动性强:课程中设置有多个互动环节,鼓励学员与老师和同学进
行交流和讨论。
•社区支持:提供了一个强大的社区支持,学员可以在社区中寻求帮助和分享经验。
4. 总结
马士兵的VIP课程是一个非常全面且实战导向的编程培训项目。
通过学习此课程,学员可以系统地掌握编程知识和技能,为未来的职业发展打下坚实的基础。
如果你是一位编程爱好者或者想要在编程领域有所建树,那么这门课程是你不容错过的选择。
(3)面向对象考虑问题的3步 (3)THIS关键字 (3)STATIC关键字(STATIC变量存放在内存中的DATA SEG中) (3)PACKAGE 关键字 (3)访问控制 (3)方法的重写 (3)S UPER关键字 (4)继承中的构造方法 (4)对象转型 (4)多态的3个必要条件 (4)动态绑定 (4)抽象类ABSTRACT (4)F INAL关键字 (4)接口 (5)5异常分类 (5)异常的捕获和处理 (5)THROW和THROWS的区别 (6)6二维数组 (6)7 S TRING B UFFER和S TRING的区别 (7)7I TERA TOR接口 (7)S ET接口 (7)L IST接口 (8)C OMPARABLE接口 (8)读的效率和写的效率 (8)M AP接口 (8)A UTO BOXING/UNBOXING(JDK1.5) (9) (9)处理流 (9)缓冲流 (9)转换流 (9)数据流 (9)Object流 (10)10线程的概念 (10)线程控制基本方法 (10)sleep方法 (10)join方法 (10)yield方法 (10)synchronized 关键字:可修饰方法,执行过程中锁定当前对象 (10)sleep()和wait()的区别 (10)notify()/notifyAll() (11)叫醒当前wait()的线程 (11) (11)TCP协议和UDP协议 (11)S OCKET (11)C OMPONENT (12)C ONTAINER (12)F RAME (12)布局管理器 (12)内部类 (13)G RAPHIC 类 (13)鼠标事件适配器 (13)W INDOW 事件 (13)匿名类 (13)swith 语句,每一条情况最后都需加break,否则会穿透。
多个case可以合并到一起Java中swith语句只能探测int类型(包括可以转换成int的类型)Return语句终止方法的运行并指定要返回的数据面向对象考虑问题的3步1.由哪些类,哪些对象构成2.这些类各自有哪些属性3.这些类之间有什么联系this关键字◆在类的方法定义中使用的this关键字代表使用该方法的对象的引用。
第一篇:Spring概述1、Spring框架内核IoC(Inverse Of Control):反转控制。
AOP(Aspect Oriented Programming):面向切面编程。
2、Spring的体系结构3、Spring开发所需的资源第二篇:Spring核心之IoC(控制反转)1、拷贝核心jar包:2、IoC的概念:3、资源交给Spring管理3.1建立spring的配置文件:a、schema约束文档资料位置b、schema引入后xml没有提示的解决方案c、把DAO实现交给Spring容器(Map结构)管理a、把核心jar包加入到classpath中b、启动Spring容器4、依赖注入:DI(Dependency Injection)5、Spring核心类或接口核心接口:ApplicationContextClassPathXmlApplicationContext:加载位于classpath中的spring配置文件。
FileSystemXmlApplicationContext:加载位于本地磁盘上的spring配置文件。
了解:BeanFactory和ApplicationContext获取Bean的区别6、Bean的初始化●方式一:使用默认的构造方法。
(推荐,重点)注意:Bean要有默认的构造方法●方式二:静态工厂方法初始化(遗留老系统)●方式三:实例工厂方法初始化(遗留老系统)7、bean的存活范围<bean的scope属性>:取值:singlton(默认值):单例的。
在spring容器中实例只有一个。
prototype:非单例的。
用的时候都会创建新的对象。
request:请求范围。
(只能用在web环境下)session:会话范围。
(只能用在web环境下)8、bean的生命周期有关配置注意:9、依赖注入:重点9.1通过构造方法注入9.2setter属性注入:重点9.3p名称空间:9.4SpEL:Spring Expression Language9.5注入数组或集合10、团队开发按模块编写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)作用:提供组件的创建(实例化)、装配(依赖关系)、销毁等基本功能。
马士兵-J2SE第二章-基础语法-个人笔记第二章基础语法一、标识符1.J ava对各种变量、方法和类等要素命名时使用的字符序列成为标识符。
2.命名规则:a)以一个字母、下划线(_)或美元符号($)开始b)由一个字母、下划线(_)或美元符号($)或数字组成c)是大小写区别对待的, 且无最大长度二、关键字关键字对Java技术编译器有特殊的含义,它们可标识数据类型名或程序构造(construct)名。
表2-1列出了使用在Java编程语言中的关键字。
abstract do implements private throwboolean double import protected throwsbreak else instanceof public transientbyte extends int return truecase false interface short trycatch final long static voidvolatileclass float new switch whilecontinue for null synchronizeddefault if package this三、常量a)J ava的常量值用字符窜表示,区分为不同的数据类型i.整形:39实型3.14 字符常量’a’字符串常量:”hellworld”四、变量a)是程序中最基本的存储单元,包括变量类名,变量类型和作用域b)每个变量都属于特定的数据类型,使用前必须声明,让后赋值,才能使用c)程序执行过程重要!!!01_标识符_关键字_数据类型_1.avi五、变量分类a)按被声明的位置:i.局部变量:方法或语句块内部(方法的参数叫局部变量)(小)ii.成员变量:方法外部、类的内部(大)iii.注意:类外面(与类对应的大括号外面)不能有变量的声明b)按所属的数据类型:i.基本数据类型变量ii.引用数据类型变量六、数据类型划分 4类8种1.b oolean只取true或false2.c har 字符型(单引号),采用Unicode编码,每个字符占两个字节(可以用十六进制编码形式表示);a)c har c1 = ‘\u0061’;b)c har c2=’\n’; 转移字符’\’3.整数型:有固定的表数范围和字段长度a)十进制 12c)十六进制要求0X或0x开头 0x12d)默认为int型i.4.浮点型:有固定的表数范围和字段长度a)十进制 3.14b)科学计数法:2.14e2c)默认为double 要声明float 必须在数字后面加f或者Ffloat f = 12.3fd)七、基本数据类型转换a)b oolean类型不可以转换为其他数据类型,其他类型也不能转换为booleanb)整形,字符型,浮点型的数据在混合运算中相互转换:i.容量小的自动变为大的,byte,short,char->int->long->float->doubleii.byte,short,char之间不能转哈,先转换为intc)容量大的变为小的时,要加上强制转换符,会造成精度降低d)多种类型数据混合运算,系统先将所有数据自动转换为最大的那中,然后计算例子TestConvert.java TestConvert2.java八、格式a)大括号对齐b)遇到{缩进,Tab / Shift + Tabc)程序块之间加空行d)并排语句之间加空格e)运算符两侧加空格i.有特定条件f){前面有空格g)成对编程九、运算符a)算术:+ , - , * , / , % , ++ , --c)逻辑: ! , & , | , ^ , && , ||d)位: & , | , ^ , ~ , >> , << , >>>e)赋值 : =f)扩展赋值: += , -= , *= , /=g)字符串连接: +1.++(--)在后时先取值在运算2.++(--)在前时先运算后取值inti1=1,i22; ii.inti=(i2++); iii.i1++2i) iv.则:i=2i2=22=223.逻辑运算符i. ! 非 , & 与 , | 或 , ^ 异或 , && 短路与 , || 短路或ii.4.赋值运算与扩展赋值运算5.字符串连接: +i.对字符串进行连接ii.+ 运算符两侧的操作数中只要有一个是字符串(String ) 系统会自动将一个操作数转换为字符串iii.当打印时,无论什么类型,都自动转换为字符串进行打印十、表达式a)符合一定语法规则的运算符和操作数的序列b)顺序:按照运算符的优先级从高到低,优先级相同的,按照事先约定的结合方向进行。
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图示检查一下流程。
课程内容---…详细包括整合struts hibernate------------------------------------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)装配<?xml version="1.0"?>-<beans><bean class="erDAOImpl" id="u"/>(class 是个类。
Id就等于构造了一个对象)<bean class="erService" id="userService"><property bean="u" name="userDAO"/> </bean>(把u这个对象注入到UserService这个类的一个userDAO的一个属性里)-</beans>2.好处:灵活装配Spring简介包括整合struts hibernate------------------------------------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. Name(可以把Id换成name,没什么区别!)a)Spring_0400_IOC_Id_Nameb)name可以用特殊字符4.简单属性的注入a)Spring_0500_IOC_SimplePropertyb)<property name=… value=….>在配置文件里直接赋值!(在此简单属性为int和string,会自动转换)5.<bean 中的scope属性a)Spring_0600_IOC_Bean_Scopeb)singleton 单例(无论去多少次都是同一个bean)c)proptotype 每次创建新的对象6.集合注入a)Spring_0700_IOC_Collectionsb)很少用,不重要!参考程序7.自动装配a)Spring_0800_IOC_AutoWireb)byNamec)byTyped)如果所有的bean都用同一种,可以使用beans的属性:default-autowire-<bean class="erDAOImpl" name="userDAO"><property name="daoId" value="1"/> </bean><bean class="erDAOImpl" name="userDAO2"><property name="daoId" value="2"/> </bean><bean class="erService"autowire="byType" scope="prototype" id="userService"></bean> </beans>(这里会报错,因为有两个userDAO和UserDAO2都是int类型!)(如果说byname则会显示第一个的内容“1”!,因为UserService类里面的userDAO属性与第一个的名字一样!)8.生命周期a)Spring_0900_IOC_Life_Cycleb)lazy-init (不重要)c)init-method与destroy-methd 不要和prototype一起用(了解)<bean class="erDAOImpl" id="u"></bean><bean class="erService" id="userService" scope="prototype"destroy-method="destroy" init-method="init"></bean></beans>9.Annotation第一步:a)修改xml文件,参考文档<context:annotation-config />b)默认按类型by typec)如果想用byName,使用@Qulifierd)写在private field(第三种注入形式)(不建议,破坏封装)e)如果写在set上,@qualifier需要写在参数上f)10.@Resource(重要)a)加入:j2ee/common-annotations.jarb)默认按名称,名称找不到,按类型c)可以指定特定名称d)推荐使用e)不足:如果没有源码,就无法运用annotation,只能使用xml11.@Component@Service @Controller @Repository(四个一样的功能!!)a)初始化的名字默认为类名首字母小写b)可以指定初始化bean的名字首先先加载ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); 即读beans.xml里面的内容,然后通过找从com.bjsxt开始“scan”含@component的类,找到之后就初始化对象,结果在其一个属相的set方法上找到一个源为“u”的一个bean,于是就加载那个bean!12.@Scope13.@PostConstruct = init-method;(在构造对象后执行此方法)@PreDestroy = destroy-method;(在容器销毁前执行此方法)什么是AOP1.面向切面编程Aspect-Oriented-Programminga)是对面向对象的思维方式的有力补充2.Spring_1400_AOP_Introduction3.好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码a)Filterb)Struts2的interceptor4.概念:a)JoinPoint 释意:切面与原方法交接点即切入点b)PointCut 释意:切入点集合是com.xyz.someapp.service.下面的任何类,任何方法,任何返回值的一个切入点的集合。
c)Aspect(切面)释意:可理解为代理类前说明(简单的理解为夹在类的新的业务逻辑,就是业务逻辑类)d)Advice 释意:可理解为代理方法前说明例如@Before(即加在切面上的说明)e)Target 释意:被代理对象被织入对象f)Weave 释意:织入Spring AOP配置与应用Spring AOP的底层实现技术---JDK动态代理2008-06-12 10:38:54JDK动态代理在JDK 1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例。
在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在我们终于发现动态代理是实现AOP的绝好底层技术。
JDK的动态代理主要涉及到ng.reflect包中的两个类:Proxy和InvocationHandler。
其中InvocationHandler 是一个接口,可以通过实现该接口定义横切逻辑,在并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编织在一起。
而Proxy为InvocationHandler实现类动态创建一个符合某一接口的代理实例。
这样讲一定很抽象,我们马上着手动用Proxy和InvocationHandler这两个魔法戒对上一节中的性能监视代码进行AOP式的改造。
首先,我们从业务类ForumServiceImpl 中删除性能监视的横切代码,使ForumServiceImpl只负责具体的业务逻辑,如所示:代码清单5 ForumServiceImpl:移除性能监视横切代码在代码清单5中的①和②处,原来的性能监视代码被移除了,我们只保留了真正的业务逻辑。