学做美食网站,功能型pc端网站框架,服务器 网站 app,网站类型是什么意思Spring1. 什么是 Spring 框架?2. 谈谈你对于 Spring IoC 的了解3. 什么是依赖注入4. Spring的依赖注入有几种方式5. 将一个类声明为 Bean 的注解有哪些?6. Component 和 Bean 的区别是什么#xff1f;7. 注入 Bean 的注解有哪些#xff1f;8. Bean 的作用域有哪些?9. Bean… Spring1. 什么是 Spring 框架?2. 谈谈你对于 Spring IoC 的了解3. 什么是依赖注入4. Spring的依赖注入有几种方式5. 将一个类声明为 Bean 的注解有哪些?6. Component 和 Bean 的区别是什么7. 注入 Bean 的注解有哪些8. Bean 的作用域有哪些?9. Bean 是线程安全的吗10. Bean 的生命周期了解么?11. 什么是AOP应用场景11. Spring AOP 和 AspectJ 12. Spring AOP 的实现原理 13. AspectJ 定义的通知类型有哪些 14. 多个切面的执行顺序如何控制 15. 什么是SpringMVC 16. SpringMVC 核心组件17. SpringMVC 工作原理18. 统一异常处理怎么做19. Spring 框架中用到了哪些设计模式20. Spring 管理事务的方式有几种21. Spring 事务中哪几种事务传播行为?22. Spring 事务中的隔离级别有哪几种?23. Transactional(rollbackFor Exception.class)注解了解吗 Spring
1. 什么是 Spring 框架?
答
Spring 是一款开源的轻量级 Java 开发框架。Spring 可以很方便地集成第三方组件电子邮件任务调度缓存等等。支持IOC、AOP使用Spring进行开发效率非常高。
2. 谈谈你对于 Spring IoC 的了解
答
将需要手动创建的对象交给框架去创建。我们只需要在一个类上添加一个注解就可以使用该类的对象了。
3. 什么是依赖注入
答
Spring容器在创建bean时如果发现一个bean的属性是容器中的另一个beanSpring则会自动的去进行对象关联。
4. Spring的依赖注入有几种方式
答
Setter注入构造器注入使用注解 Autowired或 value
5. 将一个类声明为 Bean 的注解有哪些?
答
Component最基本的 Bean 注解Controller对应控制层Service对应服务层Repository对应持久层Configuration Bean通常是在一个配置类里面将方法的返回结果注入进来。
6. Component 和 Bean 的区别是什么
答
Component 是一个类级别的注解通常用于无需编程配置即可创建bean对象的类上。Spring 会扫描对应路径上标有Component 的类将该类的对象注入进来。Bean是一个方法级别的注解通常需要进行对象属性的配置然后配合 Configuration 注解将方法的返回结果注入到 IOC 容器中。
7. 注入 Bean 的注解有哪些
答
Autowired根据类型进行注入如果匹配到多个Bean则会爆出异常。可以和Qualifier搭配使用指定使用哪个名称的BeanResource首先根据名称注入如果找不到再根据类型进行查找。可以通过name属性指定Bean的名称。
8. Bean 的作用域有哪些?
答
singleton 单例IOC容器只会存在唯一的一个Bean。prototype每次获取都会创建一个新的 beanrequest每一次 HTTP 请求都会产生一个新的 bean。该 bean 仅在当前 HTTP request 内有效。session每一次来自新 session 的 HTTP 请求都会产生一个新的 bean。该 bean 仅在当前 HTTP session 内有效。application每个 Web 应用在启动时创建一个 Bean应用 Bean该 bean 仅在当前应用启动时间内有效。使用 Scope 注解声明 Spring Bean 的作用域
9. Bean 是线程安全的吗
答
prototype 、request 、Session 每次获取都会创建一个新的 bean 实例所以不需要考虑线程安全。Singleton 是单例的会被多个线程共享所以要考虑线程安全的问题。
10. Bean 的生命周期了解么?
答
实例化 Spring容器在启动时默认会扫描启动类所在的路径并为标注为Bean的类创建实例。属性填充 为 Bean 设置相关属性和依赖。例如Autowired 注入的对象初始化 Spring容器会检测Bean是否实现了特定的生命周期回调接口。如果实现了则会在特定时间调用它们。销毁 当Spring容器关闭时会销毁所有的Bean如果销毁有回调方法的话也会执行。
11. 什么是AOP应用场景
答
面向切面编程把方法中通用的功能抽离出来比如鉴权、日志记录等通过预编译或是动态代理方式在不修改源代码的情况下给程序进行功能增强。应用场景日志、鉴权、Spring的事务等
11. Spring AOP 和 AspectJ
答
Spring AOP 和 AspectJ 都是AOP的具体实现。AspectJ是完全实现了 AOP功能比 Spring AOP 要强。
Spring AOP中使用了 AspectJ 的切点表达式注解通知类型等
区别
AspectJ 是在编译时增强使用字节码处理技术。Spring AOP 是在运行时动态生成的所以性能不如AspectJ高AspectJ不仅可以织入方法执行还可以字段赋值时构造函数执行时等。完全实现了 AOP 思想。Spring AOP 只支持方法级别的切入点
12. Spring AOP 的实现原理
答 Spring AOP的实现是基于 JDK动态代理 和 CGLIB 实现的。 如果要代理的对象实现了某个接口那么 Spring AOP 会使用 JDK动态代理去创建代理对象 而对于没有实现接口的对象则使用的是 Cglib 生成一个被代理对象的子类来作为代理。
13. AspectJ 定义的通知类型有哪些
答
Before前置通知目标对象的方法调用之前触发After 后置通知目标对象的方法调用之后触发Around 环绕通知可以在目标对象的方法调用之前和之后进行操作。
14. 多个切面的执行顺序如何控制
答
可以在切面类上使用Order 注解直接定义切面顺序。值越小优先级越高
15. 什么是SpringMVC
答
SpringMVC 是基于MVC模式设计的 Web 框架。MVC代表Model-View-Controller通常划分为Controller接口层Service 业务层Entity 实体类dao持久层
16. SpringMVC 核心组件
答
DispatcherServlet中央处理器负责接收请求、进行分发客户端响应。HandlerMapping处理器映射器根据 URL 去查找对应的 HandlerHandlerAdapter处理器适配器指定对应的 HandlerHandler请求处理器负责处理请求ViewResolver视图解析器视图解析器负责解析 Handler 返回的视图并将结果返回给DispatcherServlet
17. SpringMVC 工作原理
答
客户端浏览器发送请求 首先会到达DispatcherServlet。DispatcherServlet收到请求后调用HandlerMapping处理器映射器。处理器映射器根据请求url找到具体的处理器Handler并返回给DispatcherServletDispatcherServlet通过 HandlerAdapter处理器适配器执行找到的处理器。Handler 完成对用户请求的处理后会返回一个 ModelAndView 对象给DispatcherServletDispatcherServlet再调用 ViewResolver视图解析器解析出具体的ViewDispatcherServlet将 Model 填充到 解析出来的View中DispaterServlet 把 View 返回给浏览器
注意
如果使用ResponseBody或者RestController注解表明方法返回值应该直接在HTTP响应体中写出所以Spring MVC将直接跳过视图解析器。
18. 统一异常处理怎么做
答
可以使用 ControllerAdvice ExceptionHandler 捕获 Controller 层的异常。如果是业务层的异常如果自己能处理就自己处理。如果处理不了就抛给 Controller 层。
19. Spring 框架中用到了哪些设计模式
答
工厂设计模式 : Spring 使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。代理设计模式 : Spring AOP 功能的实现。单例设计模式 : Spring 中的 Bean 默认都是单例的。模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类它们就使用到了模板模式。包装器设计模式 : 我们的项目需要连接多个数据库而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。适配器模式 : Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。
20. Spring 管理事务的方式有几种
答
编程式事务将事务管理的代码硬编码在业务逻辑中手动管理事务的开启、提交、回滚等操作。声明式事务在 XML 配置文件中配置或者基于注解。
21. Spring 事务中哪几种事务传播行为?
答
事务传播行为 是指当在一个事务中调用另外一个事务方法时这个被调用的事务方法应该如何进行执行即事务如何在方法之间进行传播。
TransactionDefinition.PROPAGATION_REQUIRED默认的如果当前存在事务则加入该事务如果当前没有事务则创建一个新的事务。TransactionDefinition.PROPAGATION_REQUIRES_NEW新建事务如果当前存在事务把当前事务挂起。TransactionDefinition.PROPAGATION_NESTED如果当前存在事务则会再当前事务内嵌套一个事务如果没有事务则新建一个事务TransactionDefinition.PROPAGATION_MANDATORY如果当前存在事务则加入该事务如果当前没有事务则抛出异常。TransactionDefinition.PROPAGATION_SUPPORTS如果当前存在事务则加入该事务如果当前没有事务则以非事务的方式继续运行。TransactionDefinition.PROPAGATION_NOT_SUPPORTED以非事务方式运行如果当前存在事务则把当前事务挂起。TransactionDefinition.PROPAGATION_NEVER以非事务方式运行如果当前存在事务则抛出异常
22. Spring 事务中的隔离级别有哪几种?
答
TransactionDefinition.ISOLATION_DEFAULT :使用后端数据库默认的隔离级别MySQL 默认采用的 REPEATABLE_READ 隔离级别 Oracle 默认采用的 READ_COMMITTED 隔离级别.TransactionDefinition.ISOLATION_READ_UNCOMMITTED :读未提交允许读取尚未提交的数据变更可能会导致脏读、幻读或不可重复读TransactionDefinition.ISOLATION_READ_COMMITTED : 读已提交允许读取事务提交的数据可以阻止脏读但是幻读或不可重复读仍有可能发生TransactionDefinition.ISOLATION_REPEATABLE_READ : 可重复读多次读取结果都是一致的可以阻止脏读和不可重复读但幻读仍有可能发生。TransactionDefinition.ISOLATION_SERIALIZABLE : 串行化完全服从 ACID 的隔离级别。所有的事务依次逐个执行这样事务之间就完全不可能产生干扰也就是说该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
23. Transactional(rollbackFor Exception.class)注解了解吗
答
Transactional 注解默认回滚策略是只有在遇到RuntimeException(运行时异常) 或者 Error 时才会回滚事务而不会回滚 Checked Exception受检查异常可以使用 Transactional 注解的 rollbackFor 指定遇到什么异常回滚。