Spring概念和Bean管理(配置文件)

2018-06-18 02:13:11来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

Spring概念

1.spring是开源的轻量级框架(免费,依赖少,可以直接使用)

2.spring核心主要两部分:

  (1)aop:面向切面编程,扩展功能不是修改源代码实现

  (2)ioc:控制反转,

  -比如有个类,在类里面有个方法(不是静态方法),调用类里面的方法,需要创建类的对象,使用对象调用方法,创建类对象的过程,需要new 出来对象  

  -把对象的创建不是通过new方式实现,而是交给spring配置创建类对象

3.spring是一站式框架

  (1)spring在javaee三层结构中,每一层都提供不同的解决技术

  -web层:springMVC

  -service层:spring的ioc

  -dao层:spring的jdbcTemplate


 

Spring的ioc操作

1.把对象的创建交给spring进行管理

2.ioc的操作两部分:

  (1)ioc的配置文件方式【本篇的主要内容】

  (2)ioc的注解方式【详细在下一篇福介绍】

3.IOC的底层原理 

  1.ioc底层原理使用技术

    (1)xml配置文件

    (2)dom4j解析xml

    (3)工厂设计模式

    (4)反射

  2.画图分析ioc实现原理

    (1)ioc技术之前存在的模式以及存在的缺陷

     

 

    (2)ioc实现的原理

 

    

4.IOC入门案例

  第一步 导入jar包

 

   

 

  第二步 创建类,在类里面创建方法

 

  

 

  第三步 创建spring配置文件,配置创建类

 

    (1) Spring的核心配置文件名称和位置不是固定的

    -建议放到src下面,官方建议applicationContext.xml

    (2) 在xml中引入schema约束 

     

    (3)在以上beans元素内继续添加<bean id ="user" class="cn.itcast.ioc.User"></bean>

    

     注:id可以随便写,但是class的value即待创建类的路径信息一定要写对

 

  第四步 写代码测试对象创建

 

    (1)第四步只使用在测试-->新建一个测试类,在@Test的测试方法中以bean1.xml为例,先对其进行加载,然后用getBean(id)来获取得到这个待创建类的实例

    


spring的bean管理(xml配置文件)

   1.1 Bean实例化的方式

      1. Bean的实例化是一种专业术语,即在spring里面通过xml配置文件创建对象

      2. bean实例化三种方式实现

        2.1  使用类的无参构造创建(重点)--参考ioc入门案例,

          类里面没有无参数的构造时,将出现异常,比如入门案例中的第四步讲提示“No default constructor found”

        2.2  使用静态工厂创建  

          (1)工厂类中,创建了静态的方法,返回类对象,可以直接用类名.方法名来调用

          其各个步骤类似与ioc入门案例,不同之处,在以下截图中有标注,主要体现在

          1.创建了一个Bean2的工厂类,在其静态方法中返回待创建类的对象,

          2.xml文件配置内容要进行修改:

        

 

        2.3 使用实例工厂创建 

          (2)工厂类中,创建不是静态的方法,返回类对象。得用对象名.方法名来调用

          主要不同点体现在:

            1.工厂类中的创建目标类的方法是非静态方法

            2.xml中配置的修改,先生成工厂类。再根据工厂类生成待创建类,参考如下截图

      

以上第一个bean中的id与第二个bean中的factory-bean是对应相等;

对于最后一个bean的实例化方式,在对应的入门案例的第四步中,直接用getbean(“bean3”)即可;

Bean的后两种实例化方法都可以用ioc的入门案例中第四步中的测试代码进行测试,一遍验证带创建类是否成功被创建;

   1.2  Bean标签常用属性

         (1)id属性:

        -id属性值不能包含特殊符号

        -id属性可以任意命名

        -根据id值可以得到配置对象

      (2)class属性

        -创建对象所在类的全路径

      (3)name属性

        -功能和id属性值一样,但是name属性值可以包含特殊符号

      (4)scope属性

         -singleton :默认值,单例

        参考ioc入门案例,xml中没设置scope,即默认是singleton,如果在第四步测试代码中创建两个对象的话,前台输出可以看到是两个对象是同一个对象

        

         -prototype:多例

         如果xml设置scope=prototype的话,那么上图的前台输出结果将会是两个不同的值,即创建了两个不同的实例对象

  1.3 属性注入

    1. 属性注入的定义:创建对象的时候,向类里面的属性设置值得过程;

    2. 属性注入的方式介绍(三种)

    

    3. 在spring框架里面,支持前两种方式

      3.1 如何使用有参数构造注入属性?

         第一步,先按照ioc入门案例,先创建类PropertyDemo1,并定义有参构造,

         第二步,在xml配置文件中进行如下设置:其中username为属性的名称,value为本次要赋的具体值

         第三步,可以使用ioc入门案例第四步的test对以上两步进行测试

    

    

      3.2  如何使用set方法注入属性(重点)?

         第一步:创建如下类

      

         第二步:设置xml文件配置:其中bookname为属性的名称,value为本次要赋的具体值

      

  1.4 注入对象类型属性(重点)

      1.场景:以创建UserService类和Dao类为例,其中在UserService中得到UserDao对象

      2.具体实现过程

        2.1  在UserService里面把UserDao作为类型属性

        2.2 生成dao类型属性的set方法

       

        2.3 xml配置文件中的属性注入,ref值和dao类的id值保持一致

       

   1.5 注入复杂类型属性

      1.数组

      2.List

      3.Map

      案例:

        第一步创建person类,里面包含以上复杂类型的属性,并已定义set方法:

      

        第二步:在xml文件中进行配置

      

  IOC和DI区别

    (1)IOC:控制反转,把对象创建交给spring进行配置

    (2)DI:依赖注入,向类里面的属性设置值(即以上Bean管理section中的1.3-1.5的属性注入) 

    (3)关系:依赖注入不能单独存在,需要在ioc基础上才能完成操作,比如以上的xml中的property标签包含在bean标签之中,也即先要创建类的实例对象,才能对其进行属性注入

 Spring整合web项目底层原理

    1.加载spring的核心xml配置文件

    

      (1)以上直接加载,功能可以实现,但是每次都会new对象,效率很低

    2.解决的实现思想:把加载配置文件和创建对象过程,在服务器启动的时候完成

    3.实现原理的底层技术

      (1)ServletContext对象

      (2)监听器

      (3)具体使用:【在实际项目中以下步骤是spring已经封装好的,只需要配置就可以】

      --在服务器启动的时候,为每个项目创建一个ServletContext对象

      --在ServletContext对象创建时候,使用监听器可以具体监听到ServletContext对象在什么时候创建  

      --使用监听器监听到ServletContext对象创建的时候,加载spring配置文件,把配置文件中配置的对象(多个bean标签)进行创建

      --把创建出来的对象放到ServletContext域对象里面(setAttribut方法)

      --获取对象的时候,到ServletContext域得到(getAttribute方法)

    

      

 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:020.1.1 collections集合工具类

下一篇:「单点登录与权限管理」系列概述