标签:而且 proxy 监控 使用 空指针 singleton 项目启动 get 实现原理
spring模块
一,什么是依赖注入,什么是控制反转(IOC),在spring中有几种依赖注入的方式
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
把由程序代码操控的对象的调用权交给容器,通过容器实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。
其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)
依赖注入(DI)是spring核心,依赖注入早期叫反向控制,因为spring将类主动的加载依赖的对象的任务交给了容器负责,而类只需要使用这些类就行,
类也无需关心依赖对象的具体实现,实现了松耦合,方便进行模块测试。
注入方式:
构造函数注入。
set注入。
接口注入。
二,Spring中有几种配置bean的方式
基于XML的配置
基于注解的配置
基于java的配置
三。spring中一个bean的生命周期。
创建一个bean,首先需要实例化,然后设置属性值,设置bean的name,然后统通过一系列的初始化操作,bean就可以提供使用,当容器关闭时进行析构操作销毁bean。
这是beanFactory中简单bean的装配过程,若这个bean在spring的引用上下文中,则会在初始化的过程中,再调用一下setApplicationContext方法。
四,spring bean的作用。
spring中bean的作用域默认为单例的,singleton 。
prototype,与singleton相反,prototype是多例的,他为每一个bean请求单独创建一个实例
五,spring自动装配的几种方式
1.no,spring 的默认装配方式,在该方式下,spring的自动装配功能是关闭的。
2.byName:spring会自动寻找beanId与实例对象名称相同的的配置bean并自动注入,若没有则报错。
3,.byType:spring会自动寻找与实例对象类型相同的配置bean并自动注入,若没有则报错
4.constructor :构造器的自动装配和 byType 模式类似,但是仅仅适用于与有构造器相同参数的 bean ,如果在容器中没有找到与构造器参数类型一致的 bean ,那么将会抛出异常 。
5.autodetect:spring会自动测试构造器自动装配或者 byType 类型的自动装配
六,说说BeanFactory和applicationContext的区别
beanfactory是底层的实例化接口,他只能提供简单的注入的功能,applicationContext则更多的提供了企业级的服务
两者的区别:其中BeanFactory是延迟加载,也就是说知道代码中调用了getBean,bean才会被spring装配,
而applicationContext则在项目启动时,就会装载所有的bean。当然,applicationContext它还可以为 Bean 配置 lazy-init=true 来让 Bean 延迟实例化。
延迟实例化的优缺点
优点:启动时占用资源较少,对于占用资源相对较多的应用比较有优势。
缺点:速度会相对来说慢一些 。 而且有可能会出现空指针异常的错误,并且在项目启动时就加载bean方便更早的查找出bean的配置问题。
web应用推荐启动时就把所有的bean都给加载了。
七.spring 管理事务的方式
编程式事务
声明式事务
其中声明式事务又被分为两类。
基于xml的声明式事务
基于注解的声明式事务
八,spring中的代理方式有哪些
1,若被代理对象是一个借口,则使用jdk中的java.long.reflect.proxy代理,生成实现它的实现类。
优点。因为使用接口,所以使系统更加松耦合
缺点。需要为每一个代理目标编写借口
2.若代理对象是一个java类,则使用 CGLIB 库生成目标对象的子类 。
优点。不需要接口的存在
缺点。松散耦合度没有使用接口的好
九,IOC容器的初始化过程
1.rescourse定位。
2.载入
3.注册
十,AOP的实现原理:动态代理,区别参考第八条
十一,spring框架的事务管理的优点,支持声明式事务。
总结:
Spring框架优点:
方便解耦,简化开发:
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理(代码没有入侵性)
1.AOP编程的支持:
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能(便于功能扩展)
2.声明式事务的支持:
只需要通过配置就可以完成对事务的管理,而无需手动编程
3.方便程序的测试:
Spring对Junit4支持,可以通过注解方便的测试Spring程序
方便集成各种优秀框架:
java基础模块
是
标签:而且 proxy 监控 使用 空指针 singleton 项目启动 get 实现原理
原文地址:https://www.cnblogs.com/jinsheng1027/p/11615503.html