【javaweb】极客之Spring

4 篇文章 0 订阅

学习视频课程,很详细的研究了下。包括以下内容:

spring简介,ioc和aop,java的反射,资源访问工具类,以及bean的一些知识点普及。

  • SPRING

  1. 使用基本Javabean代替EJB,解决企业开发的复杂性。优点:代码污染低,AOP提供通用任务的集中管理,DI降低了耦合度。

  2. 好处:可以有效组织中间对象,消除单例模式的坏处。使用统一的配置。促进良好的变成习惯,减少编程代价。易于单元测试。使EJB成为一种备选。为数据存取提供了一致的框架。

  3. 核心模块:spring core,spring上下文,AOP面向切面编程,事务管理服务;JDBC和DAO通用,ORM,WEB模块支持与strutcs的集成,MVC框架大量视图技术

  4. SPRING IOC:

  1. 控制反转,由SPRING负责控制对象的生命周期和对象间的关系。

  2. 举个例子,跟传统模式的区别,以找女朋友为例,传统是每个对象自己去找,多高的,多瘦的,然后对象的生成和销毁都有自己来做。而SPRING类似于婚介公司,我们只要把自己的特征,以及需要的女朋友的特征告诉SPRING,他就会帮我们找好对应的女朋友,同时新的对象的生命周期都不由我们控制,我们也会被别人调用。

  3. IOC理论背景:对象之间的耦合类似齿轮组的关系,互相依赖,牵一发而动全身。IOC是一个第三方,齿轮之间的依赖关系通过IOC来实现,由IOC去控制,相当于一个粘合剂。当A需要B的时候,new B(),有了IOC后,IOC去创建B,注入到A中,返过来了所以叫控制反转,控制权颠倒了。

  4. 依赖注入:和控制反转是一回事,只不过角度不同。传统A依赖B,现在A被IOC注入。就是引入IOC,通过依赖注入的方式,实现对象间的解耦。用电脑主机和USB设备做例子,传统用光盘,耦合程度太高,人相当于IOC,电脑需要USB设备的时候,把USB插到电脑。

  5. IOC的好处:

  1. 降低耦合性,提高了可维护性,各个CLASS互不影响测试。

  2. 提高开发效率和产品质量:电脑和USB厂商互不影响,只要遵守规范就行了。开发团队之间可以不用太多的交互。

  3. 统一标准,提高模块的可复用性。

  4. 模块具有热插拔性。

  • Spring aop

  1. Aop  是oop的延续。常常用来事务处理、安全检查、缓存、对象池管理等。

  2. 编程的三部曲:1,定义普通业务组件、定义切入点、定义增强处理

  3. 关键概念:切面(日志处理)、连接点(一般是某段代码,或者方法)、切入点(链接切面和连接点)、引入,目标对象、aop代理(aop创建的这个框架对象)、织入(切面和对象)

  4. 开发包:Spring core基础核心、Spring beans配置文件,依赖注入,创建bean、Spring aop,声明事务管理,应用日志、Spring context 最重要的。还有一些其他的:aspects、context support、expression、framework、instrument、jdbc、jms等等。

  5. 案例:两个bean配置相互依赖关系,就可以使用的时候,调用b的方法。

  6. ioc概念:控制+反转。注入分为三种:构造函数注入、属性注入、接口注入。传统方法:导演注入刘建明的扮演者,使用属性注入比较方便,构造函数注入不太方便。ioc的注入方式:通过配置文件ref扮演者即可。

  • java的反射技术

  1. 通过程序化方式间接对class文件进行调用。

  2. 传统方式用构造函数或者set设置属性。

  3. 一,通过类装载器class loader(是一个运行组件,负责查找和装入class字节码文件)获取car对象,二,再获取构造器对象,用构造器件实例化对象constructor(第一个反射类),类似于new car(),三,通过反射方法设置属性,class.getmethod….invoke(第二个反射类)filed(第三个反射类)。

  4. 反射可以访问class类的所有属性和方法,但是访问private和protected的时候,需要取消Java的检查

  5. beanfactory这个工厂类就是使用反射机制实现ioc

  • 资源访问工具类

  1. Spring的一个rescource接口,为应用提供了强大的访问底层资源能力。具体实现类:bytearrayresource,二进制、文件资源,流、类、访问用rl访问的资源

  2. 上面的方法得用具体的方法,太麻烦了,也可以用资源类型地址前缀:classpath,ftp,http,file.

  3. Ant的匹配符,?一个字符,**等

  • beanfactory和applicationcontext

  1. 前者是面向Spring本身,后者是面向开发者的

  2. Bean factory

  1. XmlBeanFactory,ConfigureBeanFactory等等

  • applicatiionContext由前者派生而来,提供了更多面向实际应用的功能。主要类

  1. ClassPathXmlApplicationContext默认从类中加载,还有个file的,从文件加载配置文件

  2. 初始化加载就会实例化bean,而前者不会实例化,所以时间短

  • bean的生命周期

  1. bf的生命周期。。。调用一堆方法初始化,实例化,销毁等等

  • Spring的配置文件浅析

  1. 命名空间引入Spring的各个不同的路径,表示不同的作用,一般用Spring官方的路径

  2. bean的命名:首先唯一,getbean可以用类名,ID,name,或者ID+name(可以用这个Id或者这个name都可以获取到bean),或者多个name(通过其中任何一个别名都可以),指定别名alias,他的name是另外一个已经存在的bean的name.

  3. id和name的区别:如果配置里一个bean引用里另外一个bean,如果是id的方式引用了一个不存在的bean,那么就会直接报错。但是name的方式,只有在程序实例化运行的时候才能发现。

  4. Spring ioc中bean的实例化

  1. 构造器实例化bean:空构造器或者有参数contractor-arg index=0 value=6

  1. 不同构造器是不同的bean,然后区别有参数的多一个上面的配置

  2. 不同构造器实例化的方式是一样的,只不过bean不同而已

  • 使用静态工厂方式实例化,是有参数的构造器

  1. 同样是getbean,

  • 实例工厂:

  1. factory-bean指定工厂bean,factory-method指定实例化的方法,方式和构造器是一样的,可以无参数,有参数

  2. 这种方式有两个bean,一个实例工厂bean,一个是使用实例工厂bean创建的bean,通过上面两个配置链接到第一个bean

  3. 最终个getbean是get到第二个bean即可,调用跟其他都一样

  • Spring bean的作用域

  1. Singleton单例,是一个默认的,并且只会实例化一次,只有一个。大部分的都是这个。Spring启动时Spring applicationcontext容器会把所有的这个bean实例化放在缓存中,提前发现问题,加快运行速度。如果多个bean依赖同一个单例bean,那么是同一个bean

  2. prototype:每次getbean都是一个new bean(),与1不同

  3. request,仅在http request作用域

  4. session,仅在http session中作用域

  5. global session:全局生命周期

  6. 自定义作用域:自定义实现scope类,一般不要覆盖singleton和prototype的;注册自定义scope类,最后再使用

  7. 多个配置文件组合:多个xml,创建一个单独整合的配置文件import这多个,整合后只要加载这一个就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值