建筑工程东莞网站建设,wordpress设置为中文,广州网站设计哪里好,惠州网站建设技术支持目录前言1.spring是什么2.spring的设计核心是什么3.IOC和AOP面试题4.spring的优点和缺点5.spring中bean的作用域6.spring中bean的注入方式7.BeanFactory 和 ApplicationContext有什么区别#xff1f;8.循环依赖的情况#xff0c;怎么解决#xff1f;9.spring中单例Bean是线程…
目录前言1.spring是什么2.spring的设计核心是什么3.IOC和AOP面试题4.spring的优点和缺点5.spring中bean的作用域6.spring中bean的注入方式7.BeanFactory 和 ApplicationContext有什么区别8.循环依赖的情况怎么解决9.spring中单例Bean是线程安全的吗10.spring如何处理线程的并发问题11.spring中bean的生命周期12.在 Spring中如何注入一个java集合13.bean的自动装配14.spring用到了那些设计模式14.spring的常用注解15.spring 事务实现方式有哪些16.spring事务的实现方式和实现原理17.说一下 spring 的事务隔离前言
java最新面试题(java基础、集合、多线程、jvm、锁、算法、CAS、Redis、数据库、mybatis、spring、springMVC、springBoot、微服务)
1.spring是什么
轻量级开发框架为java提供了基础架构支持简化了企业级应用开发让开发者只需要关注业务逻辑。
2.spring的设计核心是什么
IOC和AOP
3.IOC和AOP面试题
谈谈你对IOC和AOP的理解
4.spring的优点和缺点
优点 ①解耦和方便开发spring容器进行对象的创建和管理。 ②AOP的支持面向切面编程实现日志和权限拦截等功能。 ③声明事务的支持通过配置进行事务管理不需要手动编写。 ④方便集成各种框架。 ⑤方便程序的测试。
5.spring中bean的作用域
①singleton 默认作用域单例bean每个容器中只有一个bean实例。 ②prototype 每次请求都会为bean创建实例。 ③request 为每一个request请求创建一个实例在请求完成以后bean会失效会被垃圾回收器回收。 ④session 同一个session会话共享一个实例不同会话使用不同实例。 ⑤global-session 全局作用域所有实例共享一个会话。
6.spring中bean的注入方式
①构造器注入 ②Setter注入 ③接口注入(灵活性和易用性差Spring4已经废弃)
7.BeanFactory 和 ApplicationContext有什么区别
是spring的核心接口都可以作为容器ApplicationContext是BeanFactory的子接口。 BeanFactory 是spring最底层的接口包含各种Bean的定义和Bean的管理。 ApplicationContext 作为BeanFactory的派生除了有BeanFactory的功能以外还提供了更多的功能。
8.循环依赖的情况怎么解决
循环依赖A依赖BB依赖CC依赖A形成了闭环。
①构造器的循环依赖 这种依赖spring是处理不了的直接抛出异常。 ②单例模式下的setter循环依赖 通过三级缓存处理循环依赖能处理。 ③多例模式下的setter循环依赖 不能处理会一直产生新的Bean导致OOM。
9.spring中单例Bean是线程安全的吗
不是因为所有线程共享一个单例Bean存在资源的竞争所以是线程不安全的实际上大部分时间Bean是无状态的所以说在某种程度上来说Bean其实是安全的。如果是有状态那就需要开发人员修改bean的作用域。singleton改为prototype。
有状态 有数据存储功能。 无状态 不会保存数据。
10.spring如何处理线程的并发问题
①把成员变量写在方法内。 ②使用ThreadLocalThreadLocal会为每一个线程提供一个独立的变量副本从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本从而也就没有必要对该变量进行同步了。 ③修改bean的作用域singleton改为prototype。Scope“prototype” ④使用synchronized修饰。
11.spring中bean的生命周期
正常情况 当bean不在被使用就会被回收。 单例模式 spring中bean的生命周期分为实例化Bean-Bean属性填充-初始化Bean-销毁Bean。 销毁的时候会先执行 DisposableBean.destroy()方法然后在执行 destroy-Method 方法。 多例模式 spring无法进行管理所以将生命周期交给用户控制。
12.在 Spring中如何注入一个java集合
Spring提供以下几种集合的配置元素 想要注入java集合就是注入集合类。 list 类型用于注入一列值允许有相同的值。 set 类型用于注入一组值不允许有相同的值。 map 类型用于注入一组键值对键和值都可以为任意类型。 props 类型用于注入一组键值对键和值都只能为String类型。
13.bean的自动装配
spring会在上下文中自动寻找并自动给bean装配属性。之前属性需要我们手动注入。
14.spring用到了那些设计模式
工厂模式 beanFactory就用到了简单工厂模式。 单利模式 Bean默认为单例模式。 代理模式 AOP用到了JDK的动态代理模式。 模板模式 减少代码冗余Jdbc模板等。 观察者模式 定义对象间的一对多的关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并自动更新。spring监听器的实现就用了观察者模式。
14.spring的常用注解
component任何层、controller表现层、service逻辑层、repository持久层 用于实例化对象。 scope 设置spring的作用域。 Bean 用于将方法返回值对象放入容器。 Import 在一个配置类中导入其它配置类的内容。 AutoWired 按照类型匹配注入。 Qualifier 和AutoWired联合使用在按照类型匹配的基础上在按照名称匹配。 Resource 按照名称匹配依赖注入。 Configuration 被此注解标注的类,会被 Spring 认为是配置类。 ComponentScan 用于对组件(Component)进行扫描。 Transactional 可以用于类和方法上具有事务管理的功能 Value 将外部的值动态注入到 Bean 中。 Value(“${}”)可以获取配置文件的值。 Value(“#{}”)表示SpEl(Spring Expression Language是Spring表达式语言可以在运行时查询和操作数据。)表达式通常用来获取 bean 的属性或者调用 bean 的某个方法。
15.spring 事务实现方式有哪些
编程式 beginTransaction()、commit()、rollback()等事务管理相关的方法灵活度高但是维护性差。 声明式 利用注解或者xml配置将业务和事务分离出来。
16.spring事务的实现方式和实现原理
spring事务就是对数据库事务的支持没有数据库的事务支持spring是无法提供事务 功能的。
17.说一下 spring 的事务隔离
五大隔离级别。 ISOLATION_DEFAULT 默认值使用数据库的隔离级别。 ISOLATION_READ_UNCOMMITTED 读未提交。 ISOLATION_READ_COMMITTED 读已提交。 ISOLATION_REPEATABLE_READ 可重复读。 ISOLATION_SERIALIZABLE 序列化。