spring基础概念

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

原文地址:https://www.cnblogs.com/jinsheng1027/p/11356267.html