标签:.com image 案例 contex hashmap 能力 面向切面 加载 发展史
Spring是一个框架;
Spring是一个容器框架;
Spring用于管理bean(Java类),并维护bean(Java类)之间的关系;
容器框架:整个web都属于Spring来管理,Spring可以管理web层、业务层、dao持久层,每一层都是由Java类(bean)组成的,Spring能够管理所有的bean,并且维护bean之间的关系;
Bean:
可以是Java中的任何对象,可以是JavaBean/service/servlet/dao,Spring就是通过管理每一层的bean,来实现管理整个项目。
Spring可以管理bean的实例化,对象的诞生;
Spring可以管理对象的关系(类中的对象属性);
IOC/DI:
IOC(inverse of control):控制反转
不用Spring的时候,所有的对象都是new出来的,由我们自己决定什么时候new,控制权在我们自己手上;
在Spring中,所有的对象都是由Spring来管理的,由Spring决定什么时候创建,控制权在Spring手上;
DI(dependency injection):依赖注入
如:web工程中service层与dao层的关系:
在不用Spring的时候,service依赖于对象属性dao;
在Spring中,由Spring将dao对象注入到service中,也体现了Spring管理service和dao的关系;
AOP(aspect onented programming):面向切面编程,面向所有对象编程;
现在有这样两个类:
实现Spring管理,维护bean的步骤:
1、引入jar包;
2、配置核心配置文件:applicationContext.xml
3、编写测试类
注意:
核心配置文件中的id对应创建的对象的对象名;
在核心类中使用getBean(id)方法得到Spring创建的bean对象;
在配置对象属性时,需要使用ref属性,ref属性的值对应相应的bean对象配置文件的id;如:
小结:如果我们把程序的发展史比喻成社会的话,就可以分为:
原始社会:自给自足,需要对象,就自己new一个对象;
工业社会:工厂,需要对象,由工厂创建出来,找工厂要;
共产主义社会:Spring容器,容器中存放着配置好的大量的对象,需要的时候无需主动找,Spring会依赖注入;
读取application配置文件的时候,Spring框架被加载;
当不考虑bean的生命周期时,读取application配置文件的时候,Spring中配置的bean被创建;
读取配置文件的时候,bean被实例化并且以键值对的方式放置在Spring容器中
Spring底层基于Java的反射机制
读取配置文件:IO
service = Class.forName(“bean,UserService”).newInstance(); //反射,建立实例
byeservice = Class.forName(“bean,ByeService”).newIntance(); //反射,建立实例
service.setSyaService(byeservice); //bean之间关系的建立 //属性的注入
HashMap.put(“service”,service);HashMap.put(“byeservice”,byeservice); //把对象放入HashMap中,作为Spring容器,工厂;
PS:因作者能力有限,如有误还请谅解;
标签:.com image 案例 contex hashmap 能力 面向切面 加载 发展史
原文地址:https://www.cnblogs.com/WHL5/p/8883942.html