1.Spring中AOP的应用场景、Aop原理和好处?答:AOP用于封装横切关注点,可用于以下场景:Authenticationpermissions,Caching缓存,Contextpassing内容传递,Errorhandling错误处理Lazyloading延迟加载,Debugging调试,logging,tracing,profilingandmonitoring记录跟踪优化calibration,Performanceoptimization性能优化,Persistence持久化,Resourcepooling资源池,Synchronization同步,Transactions业务原理:AOP是面向方面的编程,通过代理给程序增加统一的功能,集中解决一些常见的问题。好处:1.各个步骤之间隔离性好2.源码独立2.IOC在Spring中的作用和原理?对象创建过程。答:当一个角色需要另一个角色的协助时,在传统的编程过程中,调用者通常会创建一个被调用者的实例。但是spring中创建被调用者的工作不再由调用者完成,所以称为控制反转。创建callee的工作由spring完成,然后注入到caller中。IOC本质上是一个容器。IOC的一个简单示例是MAP。服务端加载配置文件,xml文档解析工具读取bean的ID,获取类,使用反射创建对象,以K-V的形式存储在MAP中。K是身份证。V是通过反射创建的对象。可以通过调用context.getBean(K)来获取对象。3.简介spring框架是一个全栈框架,提供了从表现层到业务层再到持久层的一整套解决方案。我们在项目中只能使用spring框架,它可以提供表现层的mvc框架和持久层的Dao框架。它的两大核心IoC和AOP为我们的程序解耦和代码简洁易维护提供了支持。4、Spring创建对象的常用注解有哪些?答:@Component@Controller@Service@Repository5中使用的设计模式。Spring答:简单工厂、工厂方法、单例模式、适配器、包装器、代理、观察者、策略、模板方法。我仔细检查了一下。6、Spring有什么优点?(1)降低了组件之间的耦合度,实现了软件层之间的解耦(2)可以使用很多容易提供的服务,比如事务管理、消息服务等(3)容器提供了单例模式支持(4)容器提供AOP技术,可以轻松实现权限拦截、运行时监控等功能。(5)容器提供了许多辅助类,可以加快应用程序的开发。(6)Spring提供了对主流应用框架的集成。支持,如hibernate、JPA、Struts等。(7)Spring是低侵入式设计,代码污染极低(8)独立于各种应用服务器(9)Spring的DI机制降低了业务对象替换的复杂度(10)Spring的高度开放并不强制应用完全依赖Spring,开发者可以自由选择部分或全部Spring7.SpringBean的作用域有什么区别?Spring容器中的Bean可以分为5个作用域。所有作用域名称都是不言自明的,但为了避免混淆,还是解释一下:singleton:这个bean作用域是默认的,这个作用域保证无论接收多少请求,每个容器中都只有一个bean的实例单例由beanfactory自己维护。原型:原型作用域与单例作用域相反,为每个bean请求提供一个实例。黑马程序员request:在requestbean的范围内,会为客户端的每一个网络请求创建一个实例。请求完成后,bean会失效,被垃圾回收器回收。session:和requestscope类似,保证每个session中都有bean的实例,session过期后bean会失效。global-session:global-session与Portlet应用相关。当您的应用程序部署为在portlet容器中工作时,它包含许多portlet。如果要为所有的portlet声明一个全局存储变量,那么这个全局变量需要存储在global-session中。全局范围与servlet中的会话范围具有相同的效果。8、Spring管理事务的方式有几种?答:有两种方式:(1)程序化交易,硬编码在代码中。(不推荐)(2)声明式事务,在配置文件中配置(推荐)声明式事务分为两种:a、基于XML的声明式事务b、基于注解的声明式事务9.spring自动装配有哪些方式?(1)No:不启用自动装配。(2)byName:通过属性的名字找到JavaBean所依赖的对象并注入。例如Computer类有一个属性printer,在指定其autowire属性为byName后,SpringIoC容器会在配置文件中寻找id/name属性为printer的bean,然后使用Seter方法注入.(3)byType:通过属性的类型找到JavaBean所依赖的对象并注入。例如Computer类有一个属性printer,其类型为Printer,那么在将其autowire属性指定为byType后,SpringIoC容器会寻找一个Class属性为Printer的bean,并使用Seter方法进行注入。(4)constructor:和byType一样,也是按类型查找依赖对象。与byType不同的是,它没有使用Seter方法注入,而是使用了构造函数注入。(5)autodetect:自动选择byType和constructor之间的注入方式。(6)default:由上级标签
