Spring入门之Spring介绍

目录(?)[-]

  1. Spring简介
    1. Spring优点
      1. 低侵入式设计代码的污染极低
      2. 独立于各种应用服务器基于Spring框架的应用可以真正实现Write OnceRun Anywhere的承诺
      3. Spring的IoC容器降低了业务对象替换的复杂性提高了组件之间的解耦
      4. Spring的AOP支持允许将一些通用任务如安全事务日志等进行集中式管理从而提供了更好的复用
      5. Spring的ORM和DAO提供了与第三方持久层框架的良好整合并简化了底层的数据库访问
      6. Spring的高度开放性并不强制应用完全依赖于Spring开发者可自由选用Spring框架的部分或全部
    2. Spring框架的组成结构框架图
    3. Spring框架管理bean的核心机制
      1. 程序主要是通过Spring容器来访问容器中的BeanApplicationContext是Spring容器最常用的接口该接口有如下两个实现类
      2. bean管理示例实现代码
    4. Spring的依赖注入DI
      1. 依赖注入用于为bean注入响应的属性值通过使用依赖注入不仅可以为bean注入简单的属性值还可以注入其他bean的引用
      2. 依赖注入是一种优秀的解耦方式其可以让bean以配置文件来组织在一起而不是以硬编码的方式耦合在一起
      3. 依赖注入的别名控制反转IOC
      4. 依赖注入分为两种方式设值注入和构造注入其中设值注入在40版本以前是通过setter方式进行属性值注入的而在40版本后就是使用反射等进行属性值注入而构造注入是通过bean类的构造器对属性进行注入
      5. 在大多数情况下建议以设值注入为主构造注入为辅的方式进行依赖注入对于依赖关系无须变化的注入尽量采用构造注入
    5. Spring中的bean的作用域
      1. Spring中的bean支持五种作用域
    6. Spring的自动装配主要用于bean之间ref
      1. Spring能自动装配Bean与Bean之间的依赖关系即无须使用ref显式指定依赖Bean而是由Spring容器检查XML配置文件内容根据某种规则为调用者Bean注入被依赖的Bean
      2. 装配方式有如下五种
    Spring简介
    Spring由Rod Johnson开发,2004年发布了Spring框架的第一版本,Spring是一个从实际开发中抽取出来的框架,他完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提供了企业应用开发的效率
    Spring优点
    低侵入式设计,代码的污染极低。
    独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。
    Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
    Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用。
    Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
    Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。
    Spring框架的组成结构框架图:

    这里写图片描述

    Spring框架管理bean的核心机制
    程序主要是通过Spring容器来访问容器中的Bean,ApplicationContext是Spring容器最常用的接口,该接口有如下两个实现类:
    ClassPathXmlApplicationContext: 从类加载路径下搜索配置文件,并根据配置文件来创建Spring容器。
    
    FileSystemXmlApplicationContext: 从文件系统的相对路径或绝对路径下去搜索配置文件,并根据配置文件来创建Spring容器。
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4
    bean管理示例实现代码:
    public class test{
        public static void main(String[] args){
    
            //从类加载路径下搜索配置文件,也就是class下
            ApplicationContext context = new ClassPathXmlApplication("bean.xml");
            //获取配置文件中配置的bean对应的实例
            Person person = context.getBean("person",Person.class);
            person.toString();
        }
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    Spring的依赖注入DI
    依赖注入用于为bean注入响应的属性值。通过使用依赖注入,不仅可以为bean注入简单的属性值,还可以注入其他bean的引用
    依赖注入是一种优秀的解耦方式,其可以让bean以配置文件来组织在一起,而不是以硬编码的方式耦合在一起
    依赖注入的别名:控制反转IOC
    依赖注入分为两种方式:设值注入和构造注入,其中设值注入在4.0版本以前是通过setter方式进行属性值注入的,而在4.0版本后就是使用反射等进行属性值注入;而构造注入是通过bean类的构造器对属性进行注入
    在大多数情况下,建议以设值注入为主,构造注入为辅的方式进行依赖注入。对于依赖关系无须变化的注入尽量采用构造注入
    Spring中的bean的作用域
    Spring中的bean支持五种作用域:
    1.singlton单例模式:在整个SpringIOC容器(ApplicationContext)中,该作用域下的bean将只生成一个实例
    
    2.prototype:每次通过容器的getBean()获取bean时,都会产生一个新的实例
    
    3.request:对于每次http请求,容器都将产生一个新的实例。只有在web应用中使用Spring容器时该作用域才有效
    
    4.session:对于一次会话,容器都将只产生一个实例。同样只有在web应用中使用Spring容器时该作用域才有效
    
    5.global session: 每个全局的HTTP Session对应一个Bean实例。在典型的情况下,仅在使用portlet context的时候有效,同样只在Web应用中有效。
    
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    如果不指定Bean的作用域,Spring默认使用singleton作用域。prototype作用域的Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成果,就可以重复使用。因此,应该尽量避免将Bean设置成prototype作用域。
    Spring的自动装配(主要用于bean之间ref)
    Spring能自动装配Bean与Bean之间的依赖关系,即无须使用ref显式指定依赖Bean,而是由Spring容器检查XML配置文件内容,根据某种规则,为调用者Bean注入被依赖的Bean。
    装配方式有如下五种:
    1.no: 不使用自动装配。Bean依赖必须通过ref元素定义。这是默认配置,在较大的部署环境中不鼓励改变这个配置,显式配置合作者能够得到更清晰的依赖关系。
    
    2.byName: 根据setter方法名进行自动装配。Spring容器查找容器中全部Bean,找出其id与setter方法名去掉set前缀,并小写首字母后同名的Bean来完成注入。如果没有找到匹配的Bean实例,则Spring不会进行任何注入。
    
    3.byType: 根据setter方法的形参类型来自动装配。Spring容器查找容器中的全部Bean,如果正好有一个Bean类型与setter方法的形参类型匹配,就自动注入这个Bean;如果找到多个这样的Bean,就抛出一个异常;如果没有找到这样的Bean,则什么都不会发生,setter方法不会被调用。
    
    4.constructor: 与byType类似,区别是用于自动匹配构造器的参数。如果容器不能恰好找到一个与构造器参数类型匹配的Bean,则会抛出一个异常。
    
    5.autodetect: Spring容器根据Bean内部结构,自行决定使用constructorbyType策略。如果找到一个默认的构造函数,那么就会应用byType策略。
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    当一个Bean既使用自动装配依赖,又使用ref显式指定依赖时,则显式指定的依赖覆盖自动装配依赖;对于大型的应用,不鼓励使用自动装配。虽然使用自动装配可减少配置文件的工作量,但大大弱化了依赖关系的清晰性和透明性。依赖关系的装配依赖于源文件的属性名和属性类型,导致Bean与Bean之间的耦合降低到代码层次,不利于高层次解耦
    1.全局默认bean装配方式设置:<beans default-autowire />;
    
    2.指定的bean装配方式设置:<bean id="" autowire-candidate="false"/>;
    
    3.全局指定beans不自动装配:<bean id="" autowire-candidate="false"/>;
    
    4.指定的bean不自动装配:<bean id="" autowire-candidate="false"/>;</h5>
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值