当前位置: 首页 > 科技观察

精华:关于Spring的15点总结

时间:2023-03-18 21:41:08 科技观察

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:由上级标签的default-autowire属性决定。10、spring有哪些核心类,它们的作用是什么?BeanFactory:生成一个新的实例,可以实现单例模式BeanWrapper:提供统一的get和set方法ApplicationContext:提供框架的实现,包括BeanFactory的所有功能11、Bean的调用方式有哪些?答:获取Bean并调用的方式有3种:(1)使用BeanWrapperHelloWorldhw=newHelloWorld();BeanWrapperbw=newBeanWrapperImpl(hw);bw.setPropertyvalue("msg","HelloWorld");System.出去。println(bw.getPropertyCalue("msg"));(2)使用BeanFactoryInputStreamis=newFileInputStream("config.xml");XmlBeanFactoryfactory=newXmlBeanFactory(is);HelloWorldhw=(HelloWorld)factory.getBean("HelloWorld");System.out.println(hw.getMsg());(3)使用ApplicationContextApplicationContextactx=newFleSystemXmlApplicationContext("config.xml");HelloWorldhw=(HelloWorld)actx.getBean("HelloWorld");System.out.println(hw.getMsg());12.什么是IOC,什么是DI,它们有什么区别?答:依赖注入DI是一种编程模式和架构模型,有时也称为控制反转,虽然从技术上讲,依赖注入是IOC的一种特殊实现,依赖注入是指将一个对象应用到另一个对象上,以提供一种特殊的能力,例如将数据库连接参数传递给对象基本思想不是在对象内部创建连接控制反转和依赖注入,而是将类的依赖从内部转换到外部,以减少对应用程序控制反转的依赖。当一个对象被创建时,它是由一个外部实体创建的,该实体调节系统中的所有对象传递给它对它所依赖的对象的引用。也可以说依赖注入到对象中。因此,控制反转是对象如何获取对其所依赖的对象的引用的责任反转。13、spring有两种代理方法:(1)如果目标对象实现了几个接口,spring使用JDK的java.lang.reflect.Proxy类代理。优点:因为有接口,系统更松耦合缺点:为每个目标类创建接口(2)如果目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类。优点:因为代理类和目标类是继承关系,所以不需要接口的存在。缺点:因为没有使用接口,所以系统的耦合性不如使用JDK的动态代理。14、springMVC的流程是什么?(1)用户向前端控制器DispatcherServlet发送请求(2)DispatcherServlet接收请求并调用处理器映射器HandlerMapping。(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象和处理器拦截器(如果有的话)返回给DispatcherServlet。(4)DispatcherServlet通过处理器适配器HandlerAdapter调用处理器(5)执行处理器(Controller,也叫后端控制器)。(6)Controller执行并返回ModelAndView(7)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet(8)DispatcherServlet将ModelAndView传递给ViewReslover视图解析器(9)ViewReslover解析后返回具体的View(10)DispatcherServlet将View渲染到View(即,将模型数据填充到视图中)。(11)DispatcherServlet响应用户15.Springmvc的优点(1)基于组件技术。所有应用程序对象,无论是控制器和视图,还是业务对象,都是Java组件。与Spring提供的其他基础结构紧密集成。(2)不依赖ServletAPI(虽然目标是真的,但是实现的时候确实依赖Servlet)(3)各种视图技术可以任意使用,不局限于JSP4。支持各种请求资源的Mapping策略5.易于扩展