海外培训视频网站建设,做添加剂的外贸网站有哪些,好学校平台网站模板下载,潍坊网站建设优化对spring的理解
1、Spring是什么?
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架#xff0c;目的是用于简化企业应用程序的开发#xff0c;它使得开发者只需要关心业务需求。常见的配置方式有三种#xff1a;基于XML的配置、基于注解…对spring的理解
1、Spring是什么?
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架目的是用于简化企业应用程序的开发它使得开发者只需要关心业务需求。常见的配置方式有三种基于XML的配置、基于注解的配置、基于Java的配置。
主要由以下七个模块组成CC DAO MW
Spring Core核心类库提供IOC服务
Spring Context提供框架式的Bean访问方式以及企业级功能JNDI、定时任务等
Spring AOPAOP服务
Spring DAO对JDBC的抽象简化了数据访问异常的处理
Spring ORM对现有的ORM框架的支持
Spring Web提供了基本的面向Web的综合特性例如多方文件上传
Spring MVC提供面向Web应用的Model-View-Controller实现。
2、Spring 的优点
1spring属于低侵入式设计代码的污染极低
2spring的DI机制将对象之间的依赖关系交由框架处理减低组件的耦合性
3Spring提供了AOP技术支持将一些通用任务如安全、事务、日志、权限等进行集中式管理从而提供更好的复用。
4spring对于主流的应用框架提供了集成支持。
3、Spring的AOP理解
实际案例日志控制。AOP一般称为面向切面作为面向对象的一种补充用于将那些与业务无关但却对多个对象产生影响的公共行为和逻辑抽取并封装为一个可重用的模块这个模块被命名为“切面”Aspect减少系统中的重复代码降低了模块间的耦合度同时提高了系统的可维护性。可用于权限认证、日志、事务处理。AOP实现的关键在于 代理模式AOP代理主要分为静态代理拦截器和动态代理。
1Spring AOP使用的动态代理Spring AOP中的动态代理主要有两种方式JDK动态代理和CGLIB动态代理JDK动态代理只提供接口的代理不支持类的代理。 动态代理底层是反射。 ②如果代理类没有实现 InvocationHandler 接口那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB是通过继承的方式做的动态代理
4、Spring的IoC理解
实际案列controller注入service,第三方注入整合redis,solr 1IOC就是控制反转是指创建对象的控制权的转移以前创建对象的主动权和时机是由自己把控的而现在这种权力转移到Spring容器中并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系对象与对象之间松散耦合也利于功能的复用。DI依赖注入和控制反转是同一个概念的不同角度的描述即 应用程序在运行时依赖IoC容器来动态注入对象需要的外部资源。2最直观的表达就是IOC让对象的创建不用去new了可以由spring自动生产使用java的反射机制根据配置文件在运行时动态的去创建对象以及管理对象并调用对象的方法的。3Spring的IOC有三种注入方式 构造器注入、setter方法注入、根据注解注入。IoC让相互协作的组件保持松散的耦合而AOP编程允许你把遍布于应用各层的功能分离出来形成可重用的功能组件。7、 解释Spring支持的几种bean的作用域。1singleton默认每个容器中只有一个bean的实例单例的模式由BeanFactory自身来维护。2prototype为每一个bean请求提供一个实例。3request为每一个网络请求创建一个实例在请求完成以后bean会失效并被垃圾回收器回收。4session与request范围类似确保每个session中有一个bean的实例在session过期后bean会随之失效。5global-session全局作用域global-session和Portlet应用相关。 8、Spring框架中的单例Beans是线程安全的么 Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。9、Spring如何处理线程并发问题在一般情况下只有无状态的Bean才可以在多线程环境下共享在Spring中绝大部分Bean都可以声明为singleton作用域因为Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理解决线程安全问题。ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。同步机制采用了“时间换空间”的方式仅提供一份变量不同的线程在访问前需要获取锁没获得锁的线程则需要排队。而ThreadLocal采用了“空间换时间”的方式。ThreadLocal会为每一个线程提供一个独立的变量副本从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象在编写多线程代码时可以把不安全的变量封装进ThreadLocal。 10-1、Spring基于xml注入bean的几种方式1Set方法注入( ) 2构造器注入①通过index设置参数的位置②通过type设置参数类型(连接池向连接池里面设置JDBC) 3静态工厂注入4实例工厂10-2、Spring的自动装配在spring中对象无需自己查找或创建与其关联的其他对象由容器负责把需要相互协作的对象引用赋予各个对象使用autowire来配置自动装载模式。在Spring框架xml配置中共有5种自动装配no,byname,ByType,constructor,autodetect.基于注解的方式在启动spring IoC时容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器当容器扫描到Autowied、Resource就会在IoC容器自动查找需要的bean并装配给该对象的属性。在使用Autowired时首先在容器中查询对应类型的bean注Autowired和Resource之间的区别(1) Autowired默认是按照类型装配注入的如果查询结果不止一个的话就按照名称来查找。默认情况下它要求依赖对象必须存在可以设置它required属性为false。(2) Resource默认是按照名称来装配注入的只有当找不到与名称匹配的bean才会按照类型来装配注入。11、Spring 框架中都用到了哪些设计模式1工厂模式BeanFactory就是简单工厂模式的体现用来创建对象的实例2单例模式Bean默认为单例模式。3代理模式Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术拦截器4模板方法用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。5观察者模式定义对象键一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都会得到通知被制动更新如Spring中listener的实现–ApplicationListener。12、Spring事务的实现方式和实现原理Spring事务的本质其实就是数据库对事务的支持没有数据库的事务支持spring是无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。1Spring事务的种类spring支持编程式事务管理和声明式事务管理两种方式①编程式事务管理使用TransactionTemplate。②声明式事务管理建立在AOP之上的。其本质是通过AOP功能对方法前后进行拦截将事务处理的功能编织到拦截的方法中也就是在目标方法开始之前加入一个事务在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要在业务逻辑代码中掺杂事务管理的代码只需在配置文件中做相关的事务规则声明或通过Transactional注解的方式便可以将事务规则应用到业务逻辑中。声明式事务管理要优于编程式事务管理这正是spring倡导的非侵入式的开发方式使业务代码不受污染只要加上注解就可以获得完全的事务支持。唯一不足地方是最细粒度只能作用到方法级别无法做到像编程式事务那样可以作用到代码块级别。2spring的事务传播行为七种主要是判断新建事物还是取用当前事物。spring事务的传播行为说的是当多个事务同时存在的时候spring如何处理这些事务的行为。3Spring中的隔离级别 五种① ISOLATION_DEFAULT这是个 PlatfromTransactionManager 默认的隔离级别使用数据库默认的事务隔离级别。② ISOLATION_READ_UNCOMMITTED读未提交允许另外一个事务可以看到这个事务未提交的数据。③ ISOLATION_READ_COMMITTED读已提交保证一个事务修改的数据提交后才能被另一事务读取而且能看到该事务对已有记录的更新。④ ISOLATION_REPEATABLE_READ可重复读保证一个事务修改的数据提交后才能被另一事务读取但是不能看到该事务对已有记录的更新。⑤ ISOLATION_SERIALIZABLE一个事务在执行的过程中完全看不到其他事务对数据库所做的更新。13、Spring框架中有哪些不同类型的事件Spring 提供了以下5种标准的事件上下文 更新 开始 停止 关闭 事件请求处理事件。15、Spring通知有哪些类型前置 后置 返回后 抛出异常通知 环绕通知