黑马程序员:三大框架11天笔记全之Spring-day11笔记
黑马程序员:三大框架11天笔记全之hibernate-day06笔记

黑马程序员:三大框架11天笔记全之hibernate-day06笔记黑马程序员:三大框架hibernate-day06笔记第1章Hibernate持久化类与主键生成策略1.1Hibernate持久化类什么是持久化类?Persistent Object (PO)PO=POJO+hbm映射配置对于hibernate中的PO编写规则:1.必须提供一个无参数的public构造方法2.所有属性要private ,对外提供public 的get/set方法3.在PO类必须提供一个标识属性,让它与数据库中的主键对应,我们管这个属性叫OID4.PO类中的属性尽量使用基本数据类型的包装类.Int-→Integer double--→Double float-→Float5.PO类它不能使用final修饰符OID作用:OID指的是与数据库中表的主键对应的属性。
Hibernate框架它是通过OID来区分不同的PO对象,如果在内存中有两个相同的OID对象,那么hibernate认为它们是同一个对象。
为什么PO类属性它要使用包装类型?使用基本数据类型是没有办法去描述不存在概念,如果使用包装类型,它就是一个对象,对于对象它的默认值是null.PO类不可以使用final修饰?(hibernate中的get/load方法的区别)Get/load方法它们都是根据id去查询对象。
1.get直接得到了一个持久化类型对象,它就是立即查询操作load它得到的是持久化类开的代理类型对象(子类对象)。
它采用了一种延迟策略来查询数据。
2.get方法在查询时,如果不存在返回nullload方法在查询时,如果不存在,会产生异常ObjectNotFoundException.1.2Hibernate主键生成策略Hibernate中定义的主键类型包括:自然主键和代理主键:自然主键:具有业务含义字段作为主键,比如:学号、身份证号代理主键:不具有业务含义字段作为主键(例如自增id),比如:mysql自增主键,oracle序列生成的主键、uuid()方法生成的唯一序列串建议:企业开发中使用代理主键!第2章Hibernate持久化对象状态2.1持久化对象三种状态有三种:1.瞬时态:也叫做临时态或自由态,它一般指我们new出来的对象,它不存在OID,与hibernate session无关联,在数据库中也无记录。
黑马程序员:三大框架11天笔记全之Spring-day09笔记

黑马程序员:三大框架Spring-day09笔记Bean的属性注入在spring中bean的属性注入有两种1.1构造器注入1.2Setter方法注入关于ref属性作用使用ref来引入另一个bean对象,完成bean之间注入1.3集合属性的注入在spring中对于集合属性,可以使用专门的标签来完成注入例如:list set map properties等集合元素来完成集合属性注入.1.3.1List属性注入如果属性是数组类型也可以使用list完成注入1.3.2Set属性注入1.3.3Map属性注入1.3.4Properties属性注入Java.util.Properties是java.utilsMap的实现类,它的key与value都是String类型.1.4名称空间p和c的使用Spring2.0以后提供了xml命名空间。
P名称空间C名称空间首先它们不是真正的名称空间,是虚拟的。
它是嵌入到spring内核中的。
使用p名称空间可以解决我们setter注入时<property>简化使用c名称空间可以解决我们构造器注入时<constructor-arg>简化使用setter注入在applicationContext.xml文件中添加p名称空间简化setter注入使用c名称空间来解决构造器注入在applicationContext.xml文件中添加c名称空间注:如果c或p名称空间操作的属性后缀是”-ref”代表要引入另一个已经存在的bean,例如1.5SpElspring expression language 是在spring3.0以后的版本提供它类似于ognl或el表达式,它可以提供在程序运行时构造复杂表达式来完成对象属性存储及方法调用等。
Spel表达式的格式#{表达式}示例1:完成bean之间的注入示例2 支持属性调用及方法调用第2章Spring注解开发在spring中使用注解,我们必须在applicationContext.xml文件中添加一个标签<context:annotation-config/>作用是让spring中常用的一些注解生效。
三大框架知识点总结

三大框架知识点总结一、前端框架知识点总结1. Angular框架Angular是一个用于构建Web应用的开源框架,由Google维护和支持。
Angular框架使用TypeScript编程语言,它提供了一套完整的工具和组件来帮助开发者构建现代化的单页面应用。
Angular框架的特点包括:•数据绑定:支持双向数据绑定,方便对数据进行同步处理。
•模块化设计:通过模块化的设计,让开发者可以轻松地组织和管理应用的代码结构。
•组件化:Angular将应用视为一系列组件的集合,每个组件都有自己的HTML、CSS和逻辑代码,这让开发者可以轻松地重用和维护代码。
•依赖注入:Angular框架提供了依赖注入机制,让开发者可以更方便地管理组件之间的依赖关系。
2. React框架React是一个由Facebook维护和支持的开源JavaScript库,用于构建用户界面。
React框架的主要特点包括:•组件化:React将应用视为一系列组件的集合,通过组件化的设计可以轻松地重用和维护代码。
•Virtual DOM:通过使用虚拟DOM的技术,React可以减少对实际DOM的操作,从而提高应用的性能。
•单向数据流:React框架使用单向数据流的模式,让数据的流动更加可控和可预测。
3. Vue框架Vue是一个由尤雨溪维护和支持的开源JavaScript库,用于构建用户界面。
Vue框架的特点包括:•轻量级:Vue框架体积小,加载速度快,非常适合构建轻量级的应用。
•渐进式框架:Vue框架可以逐步应用到项目中,即使是已有的项目也可以很容易地加入Vue框架。
•响应式:Vue框架支持响应式的设计,当数据发生变化时,视图会相应地进行更新。
4. 前端框架选择建议以上三种前端框架各自具有特点和优势,选择合适的前端框架应该考虑以下几点:•开发者技能和经验:如果团队中已有成员对某个前端框架比较熟悉,那么选择该框架可能会更容易进行开发和维护。
•项目需求:不同的项目对于前端框架的要求可能不同,比如性能要求、支持的功能等,需要考虑项目的实际需求来选择前端框架。
【黑马程序员】JavaEE框架:spring(一)

【黑马程序员】JavaEE框架:spring(一)一、技术说明(技术介绍,技术优势以及发展史等)1.1、什么是springl Spring是分层的JavaSE/EE full-stack 轻量级开源框架分层:三层体系结构,为每一个层都提供解决方案web层:struts2、spring-mvcservice层:springdao层:hibernate、mybatis、jdbcTemplate(spring)轻量级:使用时占用资源少,依赖程序少。
比较:EJB1.2、spring由来Expert One-to-One J2EE Design and Development ,介绍EJB,使用,特点Expert One-to-One J2EE Development without EJB ,不使用EJB,spring思想1.3、spring核心l 以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程为内核)1.4、spring优点l 方便解耦,简化开发(易扩展,易维护)•Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理l AOP编程的支持•Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能l 声明式事务的支持•只需要通过配置就可以完成对事务的管理,而无需手动编程l 方便程序的测试•Spring对Junit4支持,可以通过注解方便的测试Spring程序l 方便集成各种优秀框架•Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持l 降低JavaEE API的使用难度•Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低1.5、spring体系结构l spring 核心功能:beans 、core 、context 、expression二、环境搭建(技术开发环境)2.1、获取 Spring framework jar 包 1、spring 官网下载从官网下载spring 最新的相关jar 包,官网download 地址/springcommunity-download下载完成后会发现三个目录,命名很明确。
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_day01总结今日内容●Spring框架的概述●Spring的快速入门●Spring 工厂接口●在MyEclipse 配置Spring的xml文件提示●IoC容器装配Bean(xml配置方式)●Ioc容器装配Bean(注解方式)●在web项目中集成Spring●Spring 整合junit4 测试1.1 Spring框架学习路线:Spring的IocSpring的AOP , AspectJSpring的事务管理 , 三大框架的整合.1.2 Spring框架的概述:1.2.1什么是Spring:Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架* 分层:* SUN提供的EE的三层结构:web层、业务层、数据访问层(持久层,集成层)* Struts2是web层基于MVC设计模式框架.* Hibernate是持久的一个ORM的框架.* 一站式:* Spring框架有对三层的每层解决方案:* web层:Spring MVC.* 持久层:JDBC Template* 业务层:Spring的Bean管理.1.2.2Spring的核心:IOC:(Inverse of Control 反转控制)* 控制反转:将对象的创建权,交由Spring完成.AOP:Aspect Oriented Programming 是面向对象的功能延伸.不是替换面向对象,是用来解决OO中一些问题.IOC:控制反转.1.2.3Spring的版本:Spring3.x和Spring4.x Spring4需要整合hibernate4.1.2.4EJB:企业级JavaBeanEJB:SUN公司提出EE解决方案.2002 : Expert One-to-One J2EE Design and Development2004 : Expert One-to-One J2EE Development without EJB (EE开发真正需要使用的内容.)1.2.5Spring优点:方便解耦,简化开发* Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理AOP编程的支持* Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能声明式事务的支持* 只需要通过配置就可以完成对事务的管理,而无需手动编程方便程序的测试* Spring对Junit4支持,可以通过注解方便的测试Spring程序方便集成各种优秀框架* Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持降低JavaEE API的使用难度* Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低1.3 Spring的入门的程序:1.3.1下载Spring的开发包:spring-framework-3.2.0.RELEASE-dist.zip ---Spring开发包* docs :spring框架api和规范* libs :spring开发的jar包* schema :XML的约束文档.spring-framework-3.0.2.RELEASE-dependencies.zip ---Spring开发中的依赖包1.3.2创建web工程引入相应jar包:spring-beans-3.2.0.RELEASE.jarspring-context-3.2.0.RELEASE.jarspring-core-3.2.0.RELEASE.jarspring-expression-3.2.0.RELEASE.jar开发的日志记录的包:mons.logging-1.1.1.jar --- 用于整合其他的日志的包(类似Hibernate中slf4j).apache.log4j-1.2.15.jar1.3.3创建Spring的配置文件:在src下创建一个applicationContext.xml引入XML的约束:* 找到xsd-config.html.引入beans约束:<beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd">1.3.4在配置中配置类:<bean id="userService" class="cn.itcast.spring3.demo1.HelloServiceImpl"></bean>1.3.5创建测试类:@Test// Spring开发public void demo2() {// 创建一个工厂类.ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationContext.xml");HelloService helloService = (HelloService)applicationContext.getBean("userService");helloService.sayHello();}1.3.6IOC和DI(*****)区别?IOC:控制反转:将对象的创建权,由Spring管理.DI:依赖注入:在Spring创建对象的过程中,把对象依赖的属性注入到类中.* 面向对象中对象之间的关系;* 依赖:public class A{private B b;}* 继承:is a* 聚合:* 聚集:* 组合:1.3.7Spring框架加载配置文件:ApplicationContext 应用上下文,加载Spring 框架配置文件加载classpath:new ClassPathXmlApplicationContext("applicationContext.xml"); :加载classpath 下面配置文件.加载磁盘路径:new FileSystemXmlApplicationContext("applicationContext.xml"); :加载磁盘下配置文件.1.3.8BeanFactory与ApplicationContext区别?ApplicationContext类继承了BeanFactory.BeanFactory在使用到这个类的时候,getBean()方法的时候才会加载这个类.ApplicationContext类加载配置文件的时候,创建所有的类.ApplicationContext对BeanFactory提供了扩展:* 国际化处理* 事件传递* Bean自动装配* 各种不同应用层的Context实现***** 早期开发使用BeanFactory.1.3.9MyEclipse配置XML提示:Window--->xml catalog--->add 找到schema的位置 ,将复制的路径 copy指定位置,选择schema location.1.4 IOC装配Bean:1.4.1Spring框架Bean实例化的方式:提供了三种方式实例化Bean.* 构造方法实例化:(默认无参数)* 静态工厂实例化:* 实例工厂实例化:无参数构造方法的实例化:<!-- 默认情况下使用的就是无参数的构造方法. --><bean id="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>静态工厂实例化:<!-- 第二种使用静态工厂实例化 --><bean id="bean2" class="cn.itcast.spring3.demo2.Bean2Factory"factory-method="getBean2"></bean>实例工厂实例化:<!-- 第三种使用实例工厂实例化 --><bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean> <bean id="bean3Factory" class="cn.itcast.spring3.demo2.Bean3Factory"/>1.4.2Bean的其他配置:id和name的区别:id遵守XML约束的id的约束.id约束保证这个属性的值是唯一的,而且必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号name没有这些要求***** 如果bean标签上没有配置id,那么name可以作为id.***** 开发中Spring和Struts1整合的时候, /login.<bean name=”/login” class=””>现在的开发中都使用id属性即可.类的作用范围:scope属性 :* singleton :单例的.(默认的值.)* prototype :多例的.* request :web开发中.创建了一个对象,将这个对象存入request范围,request.setAttribute();* session :web开发中.创建了一个对象,将这个对象存入session范围,session.setAttribute();* globalSession :一般用于Porlet应用环境.指的是分布式开发.不是porlet环境,globalSession等同于session;实际开发中主要使用singleton,prototypeBean的生命周期:配置Bean的初始化和销毁的方法:配置初始化和销毁的方法:* init-method=”setup”* destroy-method=”teardown”执行销毁的时候,必须手动关闭工厂,而且只对scope=”singleton”有效.Bean的生命周期的11个步骤:1.instantiate bean对象实例化2.populate properties 封装属性3.如果Bean实现BeanNameAware 执行 setBeanName4.如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setBeanFactory 或者上下文对象 setApplicationContext5.如果存在类实现 BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization6.如果Bean实现InitializingBean 执行 afterPropertiesSet7.调用<bean init-method="init"> 指定初始化方法 init8.如果存在类实现 BeanPostProcessor(处理Bean),执行postProcessAfterInitialization9.执行业务处理10.如果Bean实现 DisposableBean 执行 destroy11.调用<bean destroy-method="customerDestroy"> 指定销毁方法 customerDestroy在CustomerService类的add方法之前进行权限校验?1.4.3Bean中属性注入:Spring支持构造方法注入和setter方法注入:构造器注入:<bean id="car" class="cn.itcast.spring3.demo5.Car"><!-- <constructor-arg name="name" value="宝马"/><constructor-arg name="price" value="1000000"/> --><constructor-arg index="0" type="ng.String" value="奔驰"/><constructor-arg index="1" type="ng.Double" value="2000000"/> </bean>setter方法注入:<bean id="car2" class="cn.itcast.spring3.demo5.Car2"><!-- <property>标签中name就是属性名称,value是普通属性的值,ref:引用其他的对象 --><property name="name" value="保时捷"/><property name="price" value="5000000"/></bean>setter方法注入对象属性:<property name="car2" ref="car2"/>名称空间p:注入属性:Spring2.5版本引入了名称空间p.p:<属性名>="xxx" 引入常量值p:<属性名>-ref="xxx" 引用其它Bean对象引入名称空间:<beans xmlns="/schema/beans"xmlns:p="/schema/p"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"><bean id="car2" class="cn.itcast.spring3.demo5.Car2" p:name="宝马" p:price="400000"/> <bean id="person" class="cn.itcast.spring3.demo5.Person" p:name="童童"p:car2-ref="car2"/>SpEL:属性的注入:Spring3.0提供注入属性方式:语法:#{表达式}<bean id="" value="#{表达式}"><bean id="car2" class="cn.itcast.spring3.demo5.Car2"><property name="name" value="#{'大众'}"></property><property name="price" value="#{'120000'}"></property></bean><bean id="person" class="cn.itcast.spring3.demo5.Person"><!--<property name="name" value="#{}"/>--><property name="name" value="#{personInfo.showName()}"/><property name="car2" value="#{car2}"/></bean><bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo"><property name="name" value="张三"/></bean>1.4.4集合属性的注入:<bean id="collectionBean" class="cn.itcast.spring3.demo6.CollectionBean"> <!-- 注入List集合 --><property name="list"><list><value>童童</value><value>小凤</value></list></property><!-- 注入set集合 --><property name="set"><set><value>杜宏</value><value>如花</value></set></property><!-- 注入map集合 --><property name="map"><map><entry key="刚刚" value="111"/><entry key="娇娇" value="333"/></map></property><property name="properties"><props><prop key="username">root</prop><prop key="password">123</prop></props></property></bean>1.4.5加载配置文件:一种写法:ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml",”bean2.xml”);二种方法:<import resource="applicationContext2.xml"/>1.5 IOC装配Bean(注解方式) 1.5.1Spring的注解装配BeanSpring2.5 引入使用注解去定义Bean@Component 描述Spring框架中BeanSpring的框架中提供了与@Component注解等效的三个注解:@Repository 用于对DAO实现类进行标注@Service 用于对Service实现类进行标注@Controller 用于对Controller实现类进行标注***** 三个注解为了后续版本进行增强的.1.5.2Bean的属性注入:普通属性;@Value(value="itcast")private String info;对象属性:@Autowired:自动装配默认使用类型注入.@Autowired@Qualifier("userDao") --- 按名称进行注入.@Autowired@Qualifier("userDao")private UserDao userDao;等价于@Resource(name="userDao")private UserDao userDao;1.5.3Bean其他的属性的配置:配置Bean初始化方法和销毁方法:* init-method 和 destroy-method.@PostConstruct 初始化@PreDestroy 销毁配置Bean的作用范围:@Scope1.5.4Spring3.0提供使用Java类定义Bean信息的方法@Configurationpublic class BeanConfig {@Bean(name="car")public Car showCar(){Car car = new Car();car.setName("长安");car.setPrice(40000d);return car;}@Bean(name="product")public Product initProduct(){Product product = new Product();product.setName("空调");product.setPrice(3000d);return product;}}1.5.5实际开发中使用XML还是注解?XML:* bean管理注解;* 注入属性的时候比较方便.两种方式结合;一般使用XML注册Bean,使用注解进行属性的注入.<context:annotation-config/>s@Autowired@Qualifier("orderDao")private OrderDao orderDao;1.6 Spring整合web开发:正常整合Servlet和Spring没有问题的但是每次执行Servlet的时候加载Spring配置,加载Spring环境.* 解决办法:在Servlet的init方法中加载Spring配置文件?* 当前这个Servlet可以使用,但是其他的Servlet的用不了了!!!* 将加载的信息内容放到ServletContext中.ServletContext对象时全局的对象.服务器启动的时候创建的.在创建ServletContext的时候就加载Spring的环境.* ServletContextListener:用于监听ServletContext对象的创建和销毁的.导入;spring-web-3.2.0.RELEASE.jar在web.xml中配置:<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class ></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>修改程序的代码:WebApplicationContext applicationContext =WebApplicationContextUtils.getWebApplicationContext(getServletContext());WebApplicationContext applicationContext = (WebApplicationContext) getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRI BUTE);1.7 Spring集成JUnit测试:1.程序中有Junit环境.2.导入一个jar包.spring与junit整合jar包.* spring-test-3.2.0.RELEASE.jar3.测试代码:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations="classpath:applicationContext.xml")public class SpringTest {@Autowiredprivate UserService userService;@Testpublic void demo1(){userService.sayHello();}}今天的内容总结:Struts2:Hibernate:知识点比较多.Spring:AOP. 面向切面的思想.Spring框架 IOC. AOP . 数据访问 . 集成 . Web* IOC:控制反转.将对象的创建权交给Spring.* DI:依赖注入.DI需要有IOC环境的,DI在创建对象的时候,将对象的依赖的属性,一并注入到类中. IOC装配Bean:(XML)* <bean id=”” class=””/>* 配置Bean其他的属性:* init-method destroy-method scope* DI注入属性:* 普通属性:* <property name=”属性名” value=”属性值”>* 对象属性:* <property name=”属性名” ref=”其他类的id或name”>* 集合属性的注入:IOC装配Bean:(注解)@Component 描述Spring框架中Bean@Repository 用于对DAO实现类进行标注@Service 用于对Service实现类进行标注@Controller 用于对Controller实现类进行标注DI属性注入* 普通属性:* @Value* 对象属性:* AutoWired* ResourceBean的生命周期:* 后处理Bean.BeanPostProcessor类.Spring整合Web项目:Spring整合Junit测试:。
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简介【了解】 (3)资源包整理【了解】【应用】 (4)IoC【理解】【应用】【重点】 (5)DI【理解】【应用】【重点】 (7)BeanFactory【了解】 (8)Bean配置(XML)【理解】【应用】【重点】 (9)团队开发【了解】【操作】 (13)Bean配置(注解)【了解】【操作】 (14)Spring整合JUnit【了解】【操作】 (16)AOP简介【理解】【重点】 (17)AOP简介【理解】【重点】 (17)AOP基本概念【理解】【重点】 (18)AOP(XML)【理解】【应用】【重点】 (19)AOP(注解)【理解】【应用】【重点】 (24)CGLIB【理解】【难点】 (25)DAO模板类【了解】 (26)DAO支持抽象类【理解】【操作】 (29)事务管理基本概念【了解】 (31)声明式事务(XML)【理解】【重点】 (34)声明式事务(注解)【理解】【应用】【重点】 (36)SSH整合(XML)【理解】【应用】【重点】 (37)Hibernate模板类【理解】【应用】【重点】 (42)spring简介【了解】1.Spring是一个基于Java的轻量级的J2EE框架基于Java: 底层Java实现轻量级:性能较高,运行速度较快,内存消耗较少重量级组件:EJB、CGIJ2EE应用框架:Spring可以在JEE开发的三层架构的每一层为开发者带来帮助表现层:Servlet/JSP,Struts2,SpringMVC业务层:Bean管理、AOP、事务管理数据层:JDBC,Hibernate,Spring JDBCTemplate域模型层:实体类+DAO服务层:远端调用(webservice)[类似技术RMI+JNDI]Spring提供的每层的服务技术表现层:String MVC业务逻辑层:Bean管理、AOP、事务管理数据层:DAO支持抽象类,DAO模板技术JDBCTemplate2. Spring的发展历程创始人:Rod JohnsonExpert One-to-One J2EE Design and Development(2002)阐述了J2EE使用EJB开发设计的优点及解决方案Expert One-to-One J2EE Development without EJB(2004)阐述了J2EE开发过程中不使用EJB的解决方式(Spring雏形)3.Spring核心技术IOC:控制反转AOP:面向切面编程/面向方面编程4.Spring是一个超级的“黏合平台”,将很多技术黏合在一起,形成一个整体,使每个组件发挥其最大功效资源包整理【了解】【应用】1.本课程基于Spring3.2.0进行讲解2.下载地址:/release/org/springframework/spring/说明:通过Maven部署资源从仓库获取(后期课程)3.资源文件Spring资源包下spring-framework-3.2.0.RELEASE-dist.zipSpring依赖资源包spring-framework-3.0.2.RELEASE-dependencies.zip4.资源包目录层次结构docs:API帮助文档与官方手册libs:开发使用的jar包schema:开发使用的XML约束文档源文件5.开发jar包核心jar(4个)spring-beans-3.2.0.RELEASE.jarspring-context-3.2.0.RELEASE.jarspring-core-3.2.0.RELEASE.jarspring-expression-3.2.0.RELEASE.jar日志相关jar(2个)commons-logging-1.1.1.jarcommons-logging日志整合,与slf4j类似,由apache提供log4j-1.2.15.jarIoC【理解】【应用】【重点】1.IoC(Inversion of Control)控制反转A:控制:控制的双方是什么?谁控制谁?主控方:Spring被控方:应用程序所使用的资源(原始)应用程序控制自己执行操作需要使用的外部资源(Spring)Spring控制整个程序中所需要使用的外部资源B.反转:什么是反转?反转什么?正向:应用程序直接调用资源反向:应用程序依赖Spring为其提供资源反转的是资源的控制权应用程序由主动调用资源,变为被动的等待Spring提供资源C.有什么好处?正向缺点:应用程序控制的资源分布在程序的每一个地方反向的优点:所有的资源都在Spring中,便于管理总结:Spring反向控制应用程序所需要使用的外部资源。
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图示检查一下流程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
黑马程序员:三大框架Spring-day11笔记Spring事务管理机制Spring事务管理的四个优点:1.提供一致的对于不同的事务管理的API2.支持声明式事务管理(重点)3.编程事务管理(在开发中应用比较少)4.优秀的整合与Spring的数据访问我们重点讲解spring的事务管理的相关的API,还有声明式事务管理Spring事务管理主要提供了三个接口来完成.springframework.transaction.PlatformTransactionManager这是一个事务管理器,可以来选择相关的平台(jdbc hibernate jpa…)2.TransactionDefinition它定义事务的一些相关信息例如隔离传播超时只读3.TransactionStatus它主要描述事务具体的运行状态1.1.1PlatformTransactionManager平台事务管理器在不同的持久化层解决技术它的事务代码不一样。
JDBC开发Connection con=……;con.setAutoCommit(false);//开启事务con.rollback();mit();Hibernate开发Session session=….;Transaction t=session.beginTransaction();mit();t.rollback();PlatformTransactionManager接口APIDataSourceTransactionManager 主要针对于JdbcTemplate开发MyBatis开发HibernateTransactionManasger主要针对于Hibernate开发JpaTransactionManager 主要针对于JPA开发。
1.1.2TransactionDefinition它描述的是事务的定义信息。
在TransactionDefinition中定义了大量的常量1.1.2.1隔离以下是关于隔离性相关信息事务的四个特性ACID 原子性一致性隔离性持久性。
不考虑事务隔离性有什么问题?脏读,不可重复读虚读。
ISOLATION_DEFUALT 它使用后端数据库的默认隔离级别(spring中选项) ISOLATION_READ_UNCOMMITTED 不能解决问题,会发生脏读不可重复读虚读ISOLATION_READ_COMMITTED 可以解决脏读会产生不可重复读与虚读。
ISOLATION_REPEATABLE_READ 可以解决脏读,不可重复读解决不了虚读ISOLATION_SERIALIZABLE 串行化,可以解决所有问题对于不现的数据库,它的底层默认事务隔离级别不一样。
Oracle数据库它默认的是read_committedMysql数据库它默认的是repeatable_read.1.1.2.2超时默认值是-1 它使用的是数据库默认的超时时间。
1.1.2.3只读它的值有两个true/false,如果选择true一般是在select操作时1.1.2.4传播它解决的是两个被事务管理的方法互相调用问题。
它与数据库没关系,是程序内部维护的问题。
以下定义了事务的传播行为以上操作中最常用的三种:PROPAGATION_REQUIRED默认值两个操作处于同一个事务,如果之前没有事务,新建一个事务两个操作处于不同的事务它是一种嵌套事务,它是使用SavePoint来实现的。
事务回滚时可以回滚到指定的savepoint,注意:它只对DataSourceTransactionManager有作用以下了解支持当前事务,如果不存在,就不使用事务支持当前事务,如果不存在,抛出异常以非事务运行,如果有事务存在,挂起当前事务以非事务运行,如果有事务存在,抛出异常1.1.3TransactionStatus它定义了事务状态信息,在事务运行过程中,得到某个时间点的状态1.2声明式事务管理1.2.1事务管理方式1.编码方案不建议使用,它具有侵入性。
在原有的业务代码基础上去添加事务管理代码2.声明式事务控制,基于AOP对目标进行代理,添加around环绕通知。
这种方案,它不具有侵入性,不需要修改原来的业务代码1.2.2基于xml配置声明式事务管理方案第一步:在applicationContext.xml文件中添加aop与tx的名称空间第二步:在applicationContext.xml文件中配置Spring提供的advice是传统的spring advice1.声明事务管理器2.配置通知Spring为我们提供了一个TransactionInterceptor来完成增强对于这个增强,我们可以使用spring为我们提供的一个标签<tx:advice>来完成操作3.配置切面因为使用的是传统的spring的advice,需要使用<aop:advisor>1.2.3基于annotation声明式事务管理方案可以使用@Transaction来在类或方法上添加声明式事务管理注意:需要在applicationContext.xml文件中使用相当于开启注解事务控制问题:关于xml方式与annotation方式的优缺点?从简单上来说,使用注解更方便。
使用配置的方案,可以对事务配置进行集中维护。
第2章SSH框架整合SSh=struts2+spring+hibernatestruts2 2.3.24spring 4.2.4hibernate 5.0.72.1关于xml配置文件的整合方式2.1.1SSH整合jar包2.1.1.1Struts2框架需要jar包Asm 是关于字节码操作Commons-fileupload 关于文件上传Commons-io 关于io流操作工具Commons-lang 也是一个工具,包含了关于数据与字符串操作Freemaker 标签库模板文件Javassist 它也是关于字节码操作,动态代理可以使用它实现(类似于cglib) Log4j关于日志Ognl 关于ognl表达式Struts2-core xwork-cor struts2框架底层是使用xworkStruts2与spring整合还需要这个包如果需要使用struts2提供的json处理注意:如果使用注解方案,我们还需要导入一个jar包2.1.1.2Hibernate框架需要的jar包Antlr 语法解析包Dom4j 解析xmlGeronimo-jta apache geronimo它是一个开源javaEE服务器Geronimo-jta是这个开源项目提供jar包,在hibernate中是关于jta事务相关Hibernate-commoins-annotations这个包是我们在hibernate下来使用jpa相关的注解,这样它不依赖于hibernate Hibernate-core 开发hibernate必须Hibernate-jpa 它是关于hibernate对jpa的支持Jandex 用于索引annotationJavassist 关于字节码操作(注意:strtus2中也引入这个jar包了)Jboss-logging 它是关于jboss统一日志处理如果使用关于jpa相关操作需要导入jpa依赖jar包C3p0连接池还需要数据库相关的驱动jar包还需要静态日志处理2.1.1.3Spring框架需要的jar包Spring最基本jar包AOP开发Spring jdbcSpring 事务管理需要tx Spring整合hibernateSpring整合web开发如果使用到junit测试还需要commons-loggin jar包2.1.2创建工程完成整合前期准备需要的配置文件:Strtsu2框架src/strtus.xmlHibernate框架src/hibernate.cfg.xml 在domain有Xxx.hbm.xmlSpring框架src/applicationContext.xml关于日志log4j.properties关于数据库连接db.properties2.1.3Spring整合hibernate基本原理:就是由spring来管理hibernate的SessionFactory2.1.3.1方式一:零障碍整合(了解)我们只需要使用spring中提供的一个LocalSessionFacotry来加载Hibernate的配置文件。
Ssh-xml工程加载到服务器后,如果可以自动创建表,就代表spring整合hibernate ok. 注意:我们必须配置spring的ContextLoaderListener2.1.3.2方式二(spring管理hibernate配置)不在需要hibernate.cfg.xml文件,所有关于hibernate.cfg.xml文件中的配置都在spring 的配置文件中来配置。
首先要配置数据源接下来引入properties文件创建LocalSessionFactoryBean来完成spring管理hibernate中的SessionFactory上述的props可以简化成下面方案加载hbm.xml配置文件mappingResources它类似于我们之前<mapping resource=””> mappingLocations它加载时是根据类路径加载classpath:路径mappingJarLocations它会加载jar文件中的hbm.xml文件mappingDirectoryLocations 它加载的目录2.1.3.3spring整合hibernate后的DAOspring整合hiberante后,我们的dao只需要继承HibernateDaoSupport类在HibernateDaoSupport中只需要注入SessionFactory就可以获得到HibernateTemplate,它是对hibernate操作的一个简单封装,可以让我们方便使用原来hibernate的操作.2.1.3.4编写service及测试测试事务管理2.1.3.5HibernateTemplate API介绍保存操作session.save()修改操作session.update()删除操作session.delete()类似于session.saveOrUpdate()根据持久化对象的状态来判断执行save或update获取操作get() load()Find操作类似于session.createQuery().setParameter().list()类似于hibernate中的QBC查询,完全的面向对象方案下面这个可以执行命名查询可以在User.hbm.xml文件中定义hql或sql2.1.4Spring整合struts2框架2.1.4.1前期准备创建一个addUser.jsp页面创建UserAction类Struts.xml文件中配置2.1.4.2Spring整合struts2原理分析1.spring整合struts2框架必须导入一个jar包struts2-spring-plugin.jar2.struts2框架配置文件加载顺序a.default.propertiesb.struts-default.xmlc.strtus-plugin.xml3.在struts2框架中所有的action interceptor result全是bean,在struts2框架中默认是使用strtus2自己bean初化操作.4.当我们在工程中导入struts2-spring-plugin.jar文件就会加载这个包下的strtus-plugin.xml这时bean的创建由spring来管理。