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配置的節約內存。

 

--------------------------------------謝謝觀看------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM