zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Spring18问,看你能对几题!

2023-03-31 10:29:05 时间
  • 1.spring 中都用到了哪些设计模式?
  • 2.spring 中有哪些核心模块?
  • 3.说一下你理解的 IOC 是什么?
  • 4.spring 中的 IOC 容器有哪些?有什么区别?
  • 5.那 BeanFactory 和 FactoryBean 又有什么区别?
  • 6.@Repository、@Service、@Compent、@Controller它们有什么区别?
  • 7.那么 DI 又是什么?
  • 8.说说 AOP 是什么?
  • 9.动态代理和静态代理有什么区别?
  • 10.JDK 动态代理和 CGLIB 代理有什么区别?
  • 11.Spring AOP 和 AspectJ AOP 有什么区别?
  • 12.spring 中 Bean 的生命周期是怎样的?
  • 13.spring 是怎么解决循环依赖的?
  • 14.为什么要使用三级缓存,二级缓存不能解决吗?
  • 15.@Autowired 和 @Resource 有什么区别?
  • 16.spring 事务隔离级别有哪些?
  • 17.spring 事务的传播机制有哪些?
  • 18.springBoot 自动装配原理?

1.spring 中都用到了哪些设计模式?

1.工厂设计模式: 比如通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象

BeanFactory 是 IOC 容器,是用来承载对象的

FactoryBean 是一个接口,为 Bean 提供了更加灵活的方式,通过代理一个Bean对象,对方法前后做一些操作。

6.@Repository、@Service、@Compent、@Controller它们有什么区别?

这四个注解的本质都是一样的,都是将被该注解标识的对象放入 spring 容器当中,只是为了在使用上区分不同的应用分层

  • @Repository:dao层
  • @Service:service层
  • @Controller:controller层
  • @Compent:其他不属于以上三层的统一使用该注解
  • 由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了
  • 静态代理通常只代理一个类
  • 静态代理事先知道要代理的是什么

动态代理

  • 在程序运行时,运用反射机制动态创建而成
  • 动态代理是代理一个接口下的多个实现类
  • 动态代理不知道要代理什么东西,只有在运行时才知道

10.JDK 动态代理和 CGLIB 代理有什么区别?

JDK 动态代理时业务类必须要实现某个接口,它是基于反射的机制实现的,生成一个实现同样接口的一个代理类,然后通过重写方法的方式,实现对代码的增强。

CGLIB 动态代理是使用字节码处理框架 ASM,其原理是通过字节码技术为一个类创建子类,然后重写父类的方法,实现对代码的增强。

18.springBoot 自动装配原理?

  • 1.容器在启动的时候会调用 EnableAutoConfigurationImportSelector.class 的 selectImports方法获取一个全面的常用 BeanConfiguration 列表
  • 2.之后会读取 spring-boot-autoconfigure.jar 下面的spring.factories,获取到所有的 Spring 相关的 Bean 的全限定名 ClassName
  • 3.之后继续调用 filter 来一一筛选,过滤掉一些我们不需要不符合条件的 Bean 4.最后把符合条件的 BeanConfiguration 注入默认的 EnableConfigurationPropertie 类里面的属性值,并且注入到 IOC 环境当中