java基础总结2

  1. 什么是Spring? 开源的轻量级的应用开发框架,它可以简化开发、解耦对象的依赖关系、集成其他框架,而且设计优雅。

  2. Spring有哪些核心功能? SpringIOC,SpringMVC,SpringAOP

  3. 什么是SpringIOC?那有哪些依赖注入方式呢? SpringIOC就是控制反转,我们将对象的依赖关系交给Spring容器来进行管理。
    容器通过DI依赖注入的方式来使用创建的Bean对象。
    构造器注入、Set方法注入、注解注入

  4. 注解注入有哪些方式?它们有什么区别?@Autowired和@Resource注解
    @Autowired注解是Spring框架提供的注解,可以通过构造器注入,也可以通过set方法注入,是基于类型注入的(byType)。
    @Resource注解是JDK提供的一个注解,只是Spring框架也能识别它,它只能通过set方法注入,是基于bean名称注入的(byName)。

  5. BeanFactory和FactoryBean有什么区别
    BeanFactory是Spring当中的一个接口,Spring当中的容器都实现了这个接口;本质上我们可以认为他就是Spring容器接口。
    FatoryBean是工厂Bean,工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的实例, 而是该工厂 Bean 的 getObject() 方法所返回的对象。

  6. Spring当中的BeanPostProcessor是什么
    Spring为我们提供了一个BeanPostProcessor接口,该接口可以在bean初始化时让我们可以干预做一些操作。我们需要自己用一个类,实现该接口,接口中会有两个方法,在bean初始化前做一些事情,在类初始化后做一些事情,加入具体的逻辑即可。

  7. 什么是Spring中的Aware接口
    在实际的开发中,我们却经常要用到Spring容器本身的功能或资源,Spring提供了一系列Aware接口来实现具体功能。只要我们的bean实现了具体的Aware接口,并实现其方法,Spring容器就会把具体的资源传给我们。

  8. 我们常用的Aware接口
    BeanNameAware 获取容器中 Bean 的名称
    BeanFactoryAware 获取当前 BeanFactory ,这样可以调用容器的服务
    ApplicationContextAware 获取当前Spring容器

  9. 整个IOC容器解决循环依赖,用到的几个重要成员:
    singletonObjects:一级缓存,存放完全初始化好的Bean的集合,从这个集合中取出来的Bean可以立马返回
    earlySingletonObjects:二级缓存,存放创建好但没有初始化属性的Bean的集合,它用来解决循环依赖

  10. SpringMVC中有几大组件?分别是哪些呢?它们如何交互工作的?
    SpringMVC有5大组件。
    DispatcherServlet(前端控制器)、
    HandlerMapping(请求派发控制器)、
    Controller(请求处理控制器)、
    ModelAndView(数据和视图名)、
    ViewResolver(视图解析器)。
    1.客户端发送请求,直接请求到DispatcherServlet。
    2.DispatcherServlet根据请求信息调用HandlerMapping,解析请求转发到Controller中。
    3.处理完业务逻辑后,会返回一个ModelAndView对象。
    4.ViewResolver会根据逻辑View进行视图解析。
    5.DispatcherServlet返回给客户端进行视图渲染。

  11. 转发和重定向有什么区别?
    转发:一次请求,浏览器地址不变,可以通用共享数据,只能转发到系统内部
    重定向:两次请求,浏览器地址改变,无法通用共享数据,可以重定向到内部或者外部。

  12. 什么是SpringBoot?
    SpringBoot是用来简化Spring应用的初始搭建以及开发过程的全新框架,该框架使用特定方式来进行配置,从而使开发人员不再需要定义样板化的配置。

  13. SpringBoot具有如下特性:
    1.创建独立的Spring应用程序,通过mian方法进行运行。
    2.内置嵌入的Tomcat,可选择部署jar文件,也可部署war文件。
    3.简化Maven配置,SpringBoot的父工程帮我们管理了大量的maven依赖,我们可以不用关系版本号,只需要继承引用即可。
    4.自动配置Spring,根据核心application.properties配置文件+代码注解使用,就能自动配置Spring,无需要再繁琐的去配置xml文件。

  14. 什么是SpringAOP?那什么是切面编程?
    AOP是面向切面的编程。切面编程是将原有业务中共通的处理逻辑抽离出来,进行独立封装,然后通过配置作用到原有传统的业务处理方法上。例如我们常常用来做事务处理,日志处理,异常处理,权限处理等。

  15. 切面编程的三大要素是什么?
    切面:共通功能
    切入点:对哪些方法进行切入
    通知:在方法的什么位置切入

  16. springAOP有三种配置切面的方式
    1.通过xml+表达式进行配置
    2.通过Aspect注解+表达式进行配置
    3.通过Aspect注解+自定义注解配置

  17. SpringAOP的底层原理是什么?Spring当中的动态代理有哪些实现方式
    SpringAOP的实现原理是采用动态代理技术。
    Spring采用两种方法来实现动态代理,分别是JDK动态代理技术和CGLIB动态代理技术。
    JDK动态代理技术要求我们实现InvocationHandler接口,当我们的代理类调用方法时,会被其invoke方法拦截,进行方法的增强,但它必须基于接口来实现。
    CGLIB底层采用的是字节码技术来生成代理类,也是在我们调用代理类方法时,被拦截,进行方法的增强,但它可以不基于接口来实现,而采用继承的方式来实现。

  18. 什么是事务?事务有哪些特征?
    事务通常用于数据库领域,事务是指对数据库进行读
    或写的一组操作序列,要么都执行,要么都不执行, 不允许只执行一部分的情况;
    事务的操作结果只有两种,一种是提交成功,一种 是提交不成功恢复到操作之前的状态。
    事务的特征包含ACID,
    原子性(Atomicity)
    一致性(Consistency)
    隔离性(Isolation)
    持久性(Durability)

  19. 什么是SpringBoot的自动装配
    SpringBoot会读取classpath下的META-INF/spring.factories文件,其文件中我们可以添加配置好的类,SpringBoot会把这些类自动配置成bean加入到Spring容器中。

  20. 什么是Mybatis的一级缓存和二级缓存?
    一级缓存是默认开启的,是SqlSession级别的缓存, 在操作数据库时需要构造sqlSession对象,不同的sqlSession之间的缓存数据区域是互相不影响的,不同的sqlSession中的缓存是互相不能读取。
    二级缓存需要手动开启,在xml中进行配置,是namespace(命名空间)级别的缓存基于,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

  21. 一级缓存的失效情况:
    1.手动调用clearCache()清理Session缓存
    2.同一个SqlSession两次查询期间执行了任何一次增删改操作,并commit了
    3.同一个SqlSession但是查询条件不同
    4.不同的SqlSession对应不同的一级缓存

  22. 二级缓存的开启:
    二级缓存默认关闭的,如果配置开启二级缓存,需要同时开启配置下面两项
    主配置文件Mybatis-config.xml

    需要开启二级缓存的Mapper.xml

    注意:
    1.用二级缓存的POJO类要实现Serializable接口
    2.二级缓存在session提交或关闭后才生效

  23. 二级缓存的相关设置:
    1、select标签的useCache属性:配置这个select是否使用二级缓存,一级缓存一直是使用的;默认为true
    2、增删改标签的flushCache属性:增删改默认flushCache=true。sql执行以后,会同时清空一级和二级缓存。查询默认flushCache=false
    3、sqlSession.clearCache():只是用来清除一级缓存
    4、一级缓存Session/二级缓存Namespaces,在进行了 增/删/改 操作后,默认该作用域下所有select 中的缓存将被clear
    注意:缓存都是存放于内存当中的,如果你的服务并发较高,使用二级缓存可能会降低服务器性能,一般我们不会使用二级缓存,常用redis来替换他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不将就的麒麟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值