zoukankan      html  css  js  c++  java
  • Spring 框架原理

    【spring框架原理】


    Spring框架原理

    【博主】高瑞林 

    【博客地址】http://www.cnblogs.com/grl214 

    写给读者的话

    ------亲爱的读者感谢您对小编的支持,当我正值青的年纪里,很高兴能结识了一群花样年华的你们。当幸福像花儿一样盛开,请允许我记住在花季里始终如一关注我的你  谢谢您一直在路上!让我们一起带着欢乐走进Java的世界!

    目录
    • Spring框架的概念
    • Spring中IOC
    • Spring框架原理
    • beanFactory和AppilcationContext的区别

    一.Spring框架的概念

     

       Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。

    二.Spring中的IOC

     

      IOC:(全称:Inverse Of Control )控制反转,容器主动将资源推送给它所管理的组件,组件所做的是选择一种合理的方式接受资源。

      简单的理解:把创建对象和维护之间的关系的权利由程序中转移到Spring容器的配置文件中。

      DI:(全称:Dependency Injection)依赖注入,IOC的另一种表现方式,组件以一种预先定义好的方式来接受容器注入的资源。

    三.Spring框架原理

      1.例子:

      建一个person类

     1 public class Person {
     2 
     3     private String name;
     4 
     5     private int age;
     6     
     7     private Book book;
     8 
     9     public String getName() {
    10         return name;
    11     }
    12 
    13     public void setName(String name) {
    14         this.name = name;
    15     }
    16 
    17     public int getAge() {
    18         return age;
    19     }
    20 
    21     public void setAge(int age) {
    22         this.age = age;
    23     }
    24 
    25     public Book getBook() {
    26         return book;
    27     }
    28 
    29     public void setBook(Book book) {
    30         this.book = book;
    31     }

    建一个Book类

     1 public class Book {
     2     
     3     private String name;
     4     
     5     private int price;
     6     
     7     private String place;
     8 
     9     public String getName() {
    10         return name;
    11     }
    12 
    13     public void setName(String name) {
    14         this.name = name;
    15     }
    16 
    17     public int getPrice() {
    18         return price;
    19     }
    20 
    21     public void setPrice(int price) {
    22         this.price = price;
    23     }
    24 
    25     public String getPlace() {
    26         return place;
    27     }
    28 
    29     public void setPlace(String place) {
    30         this.place = place;
    31     }
    32   } 
    

     applicationContext.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- bean的配置文件 -->
    <bean id="person" class="org.jingdong.bean.life.Person">
    <property name="name" value="grl"></property>
    <property name="age" value="11"></property>
    <property name="book" ref="book"></property>
    </bean>
    <bean id="book" class="org.jingdong.bean.life.Book">
    <property name="name" value="think in java"></property>
    <property name="place" value="USA"></property>
    <property name="price" value="79"></property>
    </beans>

      Main.java

     1 public class Main {
     2     public static void main(String[] args) {
     3         // 创建IOC容器
     4         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
     5         //从容器中获取bean实例
     6         Person person = (Person) ac.getBean("person");
     7         //使用bean
     8         System.out.println(person.getName());
     9     }
    10 }

      2.运行原理分析:

    (1).当ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext .xml");被执行时,Spring容器对象被创建,同时applicationContext .xml中的bean就会被创建到内存中:

    (2)运行原理图:

    四.beanFactory和ApplicationContext的区别

      配置bean的方式:

    (1).通过ApplicationContext上下文容器:当在加载xml配置文件时,配置文件中的配置的bean已经被实例化

    (2).BeanFactory:在加载配置文件时,配置文件中的bean不被实例化,只有当通过getBean(),获取bean实例的时候才被创建。

    总结:通过BeanFactory配置的bean比通过ApplicationContext配置的节约内存。

    --------------------------------------谢谢观看------------------------------------------------

  • 相关阅读:
    VC++ MFC应用程序项目文件2.cpp
    sql存储过程加密和解密(MSSQL)
    VC++ MFC应用程序项目文件
    vs 2017 正规表达式替换整行多行数据
    mysqli
    jQuery对象
    Solidworks如何等比例缩小放大模型
    大负载机器人为什么要用平衡缸
    Office 如何下载网页的视频 JWPlayer的内嵌视频
    Solidworks如何自动打开和关闭特征识别FeatureWorks
  • 原文地址:https://www.cnblogs.com/grl214/p/6623330.html
Copyright © 2011-2022 走看看