什么是Spring?

什么是Spring?
IoC/DI和AOP容器
JavaEE的一站式解决方案
IoC控制反转/DI依赖性注入—工厂模式和抽象工厂模式
public class BeanFactory{
private static Map<String,Object> map=new HashMap<>();
public static Object getBean(String id){}
}
BeanFactory和ApplicationContext接口的区别:
用于引用IoC容器,实现获取受管bean
1、 BeanFactory接口定义了最基本的功能,ApplicationContext接口继承于BeanFactory接口,在BeanFactory基础上提供了针对企业级开发更多的功能,例如读取资源文件、发布事件等。
2、 针对单例的受管bean,BeanFactory采用的是延迟加载,ApplicationContext采用的是立即加载
BeanFactory一般用于内存敏感的受限环境开发中,ApplicationContext可以提供更多的功能,一般环境下优先考虑使用

受管bean的定义方法:
Xml spring2.5-
Xml+注解 spring3.0
JavaConfig类 spring 4+

Xml配置方法

XML+Annotation用法:
@Component @Service/@Controller/@Repository
打开自动组件扫描
<context:component-scan base-package=“com.yan”/>
JavaConfig用法:
引入了一个带有注解@Configuration的配置类

Spring框架的主要功能
基于Java Beans的配置管理,采用IOC的原理,特别是对依赖注射技术的使用。这些都用来减少各组件间对实施细则的相互依赖性。
一个核心的,全局适用的bean工厂
一个一般抽象化的层面来管理数据库间的数据处理
建立在框架内的,对Java数据处理API和单独的JDBC数据源的一般性策略。因此,在数据处理支持上对Java企业版本环境的依赖性得以消除
和一些整合持久化的框架,如Hibernate,JDO,iBATIS和db4o,的整合
web应用中的MVC框架,基于核心的Spring功能,支持多种产生视图的技术,包括JSP,FreeMarker,Velocity,Tiles,iText,和POI
大量的AOP框架以提供诸如数据处理管理的服务。同IOC的功能一样,目的是提高系统的模块化程度

基本框架结构[过去的面试,难度系数1]
Spring是一种JavaEE开发中的一站式解决方案,所以其中包含的内容比较多,为了避免在应用中添加无用功能,所以Spring采用了非强制性的模块化结构,在具体应用中,可以根据应用所需要的功能进行选择添加。
Spring3.x分为6大模块,Spring的模块化是很强的,各个功能模块都是独立的,可以选择的使用

Core模块是Spring应用的基础,提供了最基本的IoC/DI容器的支持和实现
AOP模块建立在Core模块的基础上,提供了AOP技术的支持,以简化AOP编程的复杂度
DAO和ORM模块建立在AOP的基础上,DAO提供了dao模式编程的简化支持,ORM提供了整合持久层框架的支持。同时在AOP的基础上给数据库访问提供了声明式事务的支持。
JEE模块建立在Core模块的基础上,提供了针对EJB\邮件javaMail等企业级应用支持
Web模块建立在core模块的基础上,提供了整合其它表现层框架【例如Struts\JSF等】的支持,同时提出了自己的表现层框架SpringMVC[针对Struts1提出的]

Spring4.x分为6大模块,包括20多个子项目

Spring的全方位应用程序框架
SSH=Struts2+Spring+Hibernate 大型老牌子的公司中使用
SSM=SpringMVC+Spring+MyBatis 互联网应用开发中首选

受管bean
Spring中那些组成应用的主体以及由Spring IoC容器所管理的对象被称之为bean。Bean就是由Spring容器初始化、装配以及被管理的对象
bean是Spring管理的基本单位,在Spring的应用中,所有的组件都是bean,bean包括数据源、 Hibernate的SessionFactory及事务管理器等。 Spring里的bean是非常广义的概念,任何的Java对象,Java组件都可被当成bean处理。甚至这些组件并不是标准的JavaBean
配置一个 bean
id为在代码中引用的名称,唯一,且可以为多个,利用逗号、分号、或空格分隔
name可以一次性定义多个名称,要求唯一
class指向全类名,spring就是根据全类名,通过反射生成一个实例对象,id为这个实例对象的引用,所以必须在这个类中添加默认的构造方法,并且属性要有setter方法
scope用于设置受管bean的生存范围,可以取5种值
默认值为singleton,单例,一般用于无状态bean
prototype原型模式,每次获取时临时创建,容器不管理受管bean的生命周期。一般用于有状态bean
和web应用相关的3个范围:request session和global session

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值