JAVA面试八股文一(Spring)

  1. 单例bean是单例模式吗

单例模式一般指在jvm中一个类只能构造出来一个对象。 spring中的单例bean也是单例模式只不过范围比较小,范围是beanName,一个beanName对应一个bean对象,不同beanName可以对应不同的bean对象

  1. bean的实例化 和初始化有什么区别

springBean实例化 spring在创建对象是 通过类的构造方法创建一个对象

初始化指的是的 创建对象的过程中,执行对象中指定需要调用的方法

  1. SpringAop是如何实现的 它和AspectJ有什么区别

spirngAop是通过动态代理 如果类实现了接口,生成的代理对象会继承同一个接口,如果没有实现接口,代理对象会继承bean 代理对象会在执行方法中增加一些基础的方法逻辑,如日志,权限等

AspectJ是实现Aop的一种方式,他是在编译期进行情调,通过注解的方式实现aop

  1. Spring事务时如何实现的

a.spring事物是基于aop机制和数据可事务实现的

b.首先对于使用@Transactional注解的bean,Spring会创建一个代理对象作为bean

c.当调用代理对象的方法时首先会校验有没有@Transactional注解

d.如果加了,就会利用事务创建一个数据库连接

e.并且修改自动提交的属性,禁止此链接自动提交

f.然后执行当前方法,方法中会执行sql。

g.方法执行完之后没有异常,会提交事务

h.如果出现了异常,并且这个异常是需要回滚的事务,就回滚事务,否则提交事务。

  1. 如何理解spring事务的传播机制,底层如何实现?

一个线程在执行时,可能会连续调用好几个方法,在调用某个方法时就开启一个事务,在调用下一个方法时,是开启新事务,还是共用一个事务,这就是传播机制。 设置propagation 底层实现:根据注解配置,如果开启新事务,就会创建新的sql链接。

  1. 导致sping事务失效的原因

a.没加@configuration注解

b.方法自己内部调用自己的方法

c.方法时private, final的

e.单独的线程调用方法

f.异常被吃掉

g.类没有被spring管理

h.数据库不支持事务

  1. SpringBean的生命周期

a.调用构造方法创建对象

b.设置属性值 也就是依赖注入

c.调用后置处理器 处理@PostConstruct注解

d.初始化 处理IntitalzingBean接口

e.调用后置处理器 进行aop

f.bean对象创建完成

  1. Spring中的bean是线程安全的吗

看自己代码是如何写的,线程安不安全针对生命周期中的对象来说的,如果对象中没有共享的操作 就是线程安全的

  1. ApplactionContext和beanFactory有什么区别

ApplactionContext本身就是beanFactory 他相对于beanFactory拥有其他的方法和属性

  1. Spring容器启动流程

a.创建sping容器,sping启动时

b.扫描得到所有的需要创建对象的beanDefintion放在map中

c.筛选出单例的非懒加载的beanDefintion进行创建bean,就是创建bean的生命周期。多例bean是在创调用的时候创建的。

d.单例bean创建完成后,Spirng会发布一个容器启动事件

e.Spring启动结束

  1. @SpringBootApplication有什么用

相当于配置了扫描@ComponenScan,扫描当前在的这个包路径

@EnableAutoConfiguration 自动将配置类导入到Spring容器中

@SpringBootConfiguration 表示当前类是配置类

作用:spingBoot扫描,导入自动配置类

12.SpringBoot启动过程做了什么事情

a.判断应用类型,不同应用类型会创建不同Spring容器

b.创建spring容器

c.解析启动类,扫描包,导入自动配置类解析

d.启动tommcat或者jetty

e.调用applicationRunner

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值