• 联系我们
  • 地址:湖北武汉三环科技园
  • 电话:159116031100
  • 传真:027-68834628
  • 邮箱:mmheng@foxmail.com
  • 当前所在位置:首页 - java培训
  • Spring基础知识汇总 Java开发必看
  •   Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分

      Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。

      Spring总结起来优点如下

      Rod Johnson是第一个高度重视以配置文件来管理Java实例的协作关系的人,他给这种方式起了一个名字:控制反转(Inverse of Control,IoC)。后来Martine Fowler为这种方式起了另一个名称:依赖注入(Dependency Injection),因此不管是依赖注入,还是控制反转,其含义完全相同。当某个Java对象(调用者)需要调用另一个Java对象(被依赖对象)的方法时,在传统模式下通常有两种做法

      被动接受Spring容器为调用者的变量赋值即可,由此可见,使用Spring后,调用者获取被依赖对象的方式由原来的主动获取,变成了被动接受所以Rod Johnson称之为控制反转。

      另外从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的变量相当于为调用者注入它依赖的实例,因此Martine Fowler称之为依赖注入。

      利用构造器来设置依赖关系的方式,被称为构造注入。通俗来说,就是驱动Spring在底层以反射方式执行带指定参数的构造器,当执行带参数的构造器时,就可利用构造器参数对变量执行初始化这就是构造注入的本质。

      对于开发者来说,开发者使用Spring框架主要是做两件事:①开发Bean;②配置Bean。对于Spring框架来说,它要做的就是根据配置文件来创建Bean实例,并调用Bean实例的方法完成“依赖注入”这就是所谓IoC的本质。

      request: 对于一次HTTP请求,request作用域的Bean将只生成一个实例,这意味着,在同一次HTTP请求内,程序每次请求该Bean,得到的总是同一个实例。只有在Web应用中使用Spring时,该作用域才真正有效

      对于一次HTTP会话,session作用域的Bean将只生成一个实例,这意味着,在同一次HTTP会话内,程序每次请求该Bean,得到的总是同一个实例。只有在Web应用中使用Spring时,该作用域才真正有效

      如果不指定Bean的作用域,Spring默认使用singleton作用域。prototype作用域的Bean的创建、代价比较大。而singleton作用域的Bean实例一旦创建,就可以重复使用。因此,应该尽量避免将Bean设置成prototype作用域。

      Spring能自动装配Bean与Bean之间的依赖关系,即无须使用ref显式指定依赖Bean,而是由Spring容器检查XML配置文件内容,根据某种规则,为调用者Bean注入被依赖的Bean。

      Spring自动装配可通过

      byName: 根据setter方法名进行自动装配。Spring容器查找容器中全部Bean,找出其id与setter方法名去掉set前缀,并小写首字母后同名的Bean来完成注入。如果没有找到匹配的Bean实例,则Spring不会进行任何注入

      byType: 根据setter方法的形参类型来自动装配。Spring容器查找容器中的全部Bean,如果正好有一个Bean类型与setter方法的形参类型匹配,就自动注入这个Bean;如果找到多个这样的Bean,就抛出一个异常;如果没有找到这样的Bean,则什么都不会发生,setter方法不会被调用

      当一个Bean既使用自动装配依赖,又使用ref显式指定依赖时,则显式指定的依赖覆盖自动装配依赖;对于大型的应用,不鼓励使用自动装配。虽然使用自动装配可减少配置文件的工作量,但大大将死了依赖关系的清晰性和透明性。依赖关系的装配依赖于源文件的属性名和属性类型,导致Bean与Bean之间的耦合降低到代码层次,不利于高层次解耦

      !--通过设置可以将Bean排除在自动装配之外--bean id= autowire-candidate=lse/!--除此之外,还可以在beans元素中指定,支持模式字符串,如下所有以abc结尾的Bean都被排除在自动装配之外--beans deult-autowire-candidates=abc/

      使用构造器来创建Bean实例是最常见的情况,如果不采用构造注入,Spring底层会调用Bean类的无参数构造器来创建实例,因此要求该Bean类提供无参数的构造器。

      采用默认的构造器创建Bean实例,Spring对Bean实例的所有属性执行默认初始化,即所有的基本类型的值初始化为0或lse;所有的引用类型的值初始化为null。

      使用静态工厂方法创建Bean实例时,class属性也必须指定,但此时class属性并不是指定Bean实例的实现类,而是静态工厂类,Spring通过该属性知道由哪个工厂类来创建Bean实例。

      除此之外,还需要使用ctory-method属性来指定静态工厂方法,Spring将调用静态工厂方法返回一个Bean实例,一旦获得了指定Bean实例,Spring后面的处理步骤与采用普通方法创建Bean实例完全一样。如果静态工厂方法需要参数,则使用

      lookup-method.../元素所指定的抽象方法,如果目标抽象类实现过接口,Spring会采用JDK动态代理来实现该抽象类,并为之实现抽象方法;如果目标抽象类没有实现过接口,Spring会采用cglib实现该抽象类,并为之实现抽象方法。Spring4.0的spring-core-.jar包中已经集成了cglib类库。

      Bean后处理器是一种特殊的Bean,这种特殊的Bean并不对外提供服务,它甚至可以无须id属性,它主要负责对容器中的其他Bean执行后处理,例如为容器中的目标Bean生成代理等,这种Bean称为Bean后处理器。Bean后处理器会在Bean实例创建成功之后,对Bean实例进行进一步的增强处理。Bean后处理器必须实现

      @PreDestroy同样位于javax.annotation包下,也是来自JavaEE规范的两个Annotation,Spring直接借鉴了它们,用于定制Spring容器中Bean的生命周期行为。它们都用于修饰方法,无须任何属性。其中前者修饰的方法时Bean的初始化方法;而后者修饰的方法时Bean之前的方法。

      @Autowired标注setter方法时,默认采用byType自动装配策略。在这种策略下,符合自动装配类型的候选Bean实例常常有多个,这个时候就可能引起异常,为了实现精确的自动装配,Spring提供了

      AOP(Aspect Orient Programming)也就是面向切面编程,作为面向对象编程的一种补充,已经成为一种比较成熟的编程方式。其实AOP问世的时间并不太长,AOP和OOP互为补充,面向切面编程将程序运行过程分解成各个切面。

      AOP专用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在JavaEE应用中,常常通过AOP来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP已经成为一种非常常用的解决方案。

      AspectJ是一个基于Java语言的AOP框架,提供了强大的AOP功能,其他很多AOP框架都借鉴或采纳其中的一些思想。其主要包括两个部分:一个部分定义了如何表达、定义AOP编程中的语法规范,通过这套语法规范,可以方便地用AOP来解决Java语言中存在的交叉关注点的问题;另一个部分是工具部分,包括编译、调试工具等。

      AOP实现可分为两类

      iPhone 6s 6s Plus何时发售,中国是首批发售地区么,售价是多少?在国内如何购买行货版iPhone 6s 6s Plus?有没有更便宜的地方买到iPhone 6s 6s Plus?购买iPhone时最头疼的是区别网络制式,这回会有

      苹果iPhone系统升级iOS9后遇到常见问题以及解决方法:设备卡在滑动屏幕升级,如果你已经升级到iOS 9 0 1:Wi-Fi无法连接、自动断开或速度慢,触摸屏幕反应,部分App无法使用蜂窝数据,蓝牙无法连接

      今年的 iPhone6S 一栏,也有5 5寸的 iPhone6S Plus 手机。大屏手机对于很多人都有很大的吸引力,这也是吸引一些用户转投苹果 iPhone 阵营的法宝。对于以前没有使用过 iPhone 手机的用户而言

      想知道自己的iPhone6是真的假的?想知道买的苹果iPhone6是不是山寨机,iPhone6如何辨别,如何辨别苹果iphone6,如何识别iphone6,且看下面图文教程教你如何辨别iPhone6是否山寨货

    推荐:

    娃娃王爷无盐妃,强占契约妻,恶夜活死鸡图解,重生之我是步惊云,抛砖引玉打一生肖,冷 面总裁笨蛋妻,天才丑女玩转校园,失婚总裁劫前妻,拉缘天堂,冲喜新娘赔心交易,酿酒皇后, 欲色谷,主家教贝尔菲戈尔,晓声长谈在线直播,人计苗亦有秀,甜妻不撒娇,极品白领后记, 江山人志女主角,掳情一夜成欢,爱妻慈蓝伶,琢本友希,小村春潮,七个相公够不够,烟绕寒 天,穿越之蓝月皇后,村上里沙和金毛,王锡玄快乐大本营,倩女幽魂修为模拟器,刑警使命第 二部,张良的表字,喜上加喜片尾曲,神雕之萧峰后人,部长夫人请息怒,魅惑暴王别宠我,垂悬 腹,村上里沙帝王浴,魂断楼兰好看吗,豪绝恋赎罪新娘,蓬松乳,痒孟楠,柴胡疏肝散 同仁 堂,驯服坏坏太子,黑道冷枭的陪心交易,赤道和北极原唱,圣魔网,狼王宠奴,挽红楼之玉亦狂 ,茅道临是茅于轼儿子,素手华筝,徐其耀玩过的女人,新矿吧,kayden kross第八日,打飞机专 用网,红楼旁观的平淡生活,首席执行官的合约情人,焰王的极品新娘,穿越人鱼之我要的幸福 ,冰山王妃邪魅爷,超幸福鞋垫三部曲,勒组词,一级片武则天,鸿钧现代生活录,现代豪侠传插 曲,欲海逍遥 花间浪子