【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配置的节约内存。
--------------------------------------谢谢观看------------------------------------------------