spring是轻量级的DI和AOP容器框架,
轻量级:spring框架的jar包打包后只有2.5MB,并且spring框架开的应用的对象一般不依赖spring的类。
依赖注入:spring提供了一种送耦合的技术,称为依赖注入(DI),以前被称为反向控制,使用DI,对象就是被动接收依赖类,而不是自己主动去找,可以将DI理解为JNDI的反转。
面向切面:spring对面向切面变成提供了强大的支持,通过将业务逻辑从应用服务中分离出来,实现了内聚开发,应用对象只做他该做的业务逻辑,而不负责业务逻辑
容器:spring是一个容器,因为他包含并且管理应用对象的生命周期和配置。开发人员可通过配置来控制Bean是单一实例还是每次请求生成一个实例。
框架:spring使用简单的组件组成一个复杂的应用,在spring中应用对象通过XML文件配置组合起来
spring由7个模块组成,开发人员不必将应用完全建立在spring框架之上,可以选择适合自己的应用模块,不使用自己不需要的模块。
核心容器:spring的7个模块全部建立在核心容器的基础之上,在核心容器中可以找到beanFactory这个类
1.application-Context —— web 模块
2.AOP模块
3.DAO - ORM 模块
4.MCV模块
5.JMX模块 (java管理模块)
6.JCA模块(JavaEE连接器API)
7.JMS (java消息服务)
spring的bean的有效范围在spring容器之内,脱离了容器,bean就失效。
spring的基础容器spring容器(BeanFactory)可以满足简单应用的需求,而更高级的容器,应用上下文容器(ApplicationContext),则提供企业级的服务。
AOP的五种通知类型:
before 前
After-returning 返回后
After-throwing 抛出后
Around 周围
Introduction 引入
spring获取配置bean可以后去两种容器下的配置bean,BeanFactory和applicationContext(应用上下文)。
两种容器的区别:
一、从ApplicationContex 应用上下文容器中获取bean和从bean工厂容器中获取bean
具体案例:
//从ApplicationContext中取bean
ApplicationContext ac=new ClassPathXmlApplicationContext("com/hsp/ioc/beans.xml");
//当我们去实例化beans.xml,该文件中配置的bean被实例(该bean scope是 singleton)从bean中取出student
//如果我们使用beanfactory去获取bean,当你只是实例化该容器, 那么
//容器的bean不被实例化,只有当你去使用getBean某个bean时,才会实时的创建.
BeanFactory factory = new XmlBeanFactory(
new ClassPathResource("com/hsp/ioc/beans.xml"));
factory.getBean("student");
结论:
1.如果使用ApplicationContext ,则配置的bean如果是 singlton不管你用不用,都被实例化.(好处就是可以预先加载,缺点就是耗内存)
2.如果是 BeanFactory ,则当你获取beanfacotry时候,配置的bean不会被马上实例化,当你使用的时候,才被实例(好处节约内存,缺点就是速度)
3.规定: 一般没有特殊要求,应当使用ApplicatioContext完成(90%)
————————————————
版权声明:本文为CSDN博主「老妈老爹我」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36287601/article/details/82559260