首页 > 代码库 > Spring 框架原理

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="http://www.mamicode.com/grl"></property>
<property name="age" value="http://www.mamicode.com/11"></property>
<property name="book" ref="book"></property>
</bean>
<bean id="book" class="org.jingdong.bean.life.Book">
<property name="name" value="http://www.mamicode.com/think in java"></property>
<property name="place" value="http://www.mamicode.com/USA"></property>
<property name="price" value="http://www.mamicode.com/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配置的节约内存。

 

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

 

Spring 框架原理