21-09-14面经分享

本文详细介绍了Spring框架中对数据库的基本操作,包括CRUD语句的使用,数据源的作用,以及Spring中常用注解的解释。同时,讨论了Spring核心容器的单例模式优缺点,并阐述了Spring的AOP基于动态代理实现。此外,还涵盖了Spring对象注入的多种方式,自动装配的策略,以及通知的五种形式。最后,文章提及了重写和重载的概念及其区别,以及后续学习路径的建议,涉及Java后端和前端技术栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 熟练的书写CRUD语句

假设此时有一张user表;

1.1 增加

insert into user(name , age , address) values(‘张三’ , 22 , ‘河南省郑州市’ );

1.2 删除

delete from user where userId = 1;

1.4 修改

update user set name = ‘王五’ , age = 20 , address = ‘河南省驻马店市’ where userId = 1;

1.5 查询

select * from user where userId = 1;

2 数据源的作用是什么?

数据源中存储的是数据库连接,当程序启动时,数据源自动创建一些数据库连接并存放到连接池中。当我们需要数据库连接时直接从连接池中取,而不是在重新new了,这样做的好处是效率高。因为数据库连接的创建与销毁都是资源消耗极大的操作,减少这类操作的次数可以大大提高系统效率。同样的,当我们需要关闭数据库连接时,并不是close了,而是放回到池中去;

3 Spring中类上常用的注解

@Component @Repository @Service @Controller

4 Spring的核心容器为什么是单例创建的?

在Spring中有两个核心容器,它们分别是BeanFactory和ApplicationContext;
其中BeanFactory是Spring萌芽阶段使用的核心容器,它采用的是懒加载,也就是多例。哪里需要就往哪里实例化;
而ApplicationContext是在BeanFactory基础上增强的一个核心容器。它采用立即加载,是单例的。

4.1 单例的优缺点

优点:
单例是处处引用一个实例化对象,所以new关键字使用的少,效率就会高;
因为对象创建的少,所以垃圾回收器压力就会小;
缺点:
因为是一个对象被处处引用,所以在并发环境下它是线程不安全的;

5 Spring的AOP基于什么?

基于动态代理;
采用两种,分别是JDK的动态代理和基于CGLIB的动态代理;

6 Spring中对象注入的几种方式

  1. 构造方法注入;
  2. set方法注入;
  3. 注解注入{
    这里面会用到三个注解,分别是:@Autoride @Qualifier @Resource;
    @Autoride是自动注入的意思,它的注入规则是按类型。如果在核心容器中没有一个键值对和成员变量类型一致就直接报错;
    如果有一个就直接注入;
    如果有多个,就会使用成员变量的变量名作为id在类型匹配的键值对中寻找,如果没有一个键值对的id == 变量名就直接报错;
    @Qualifier是按id进行注入的 :它在进行成员变量注入的时候需要和@Autoride进行连用;
    @Resource是按id进行注入的:但它和@Qualifier的区别在于它可以直接单独使用,不需要@Autoride的配合;
    };
  4. 静态工厂方法注入;
  5. 实例工厂方法注入;

7 Spring中自动装配的五种方式

  1. no:不自动装配;
  2. default:和上一个最近的标签采用同样的装配方式;
  3. byName:利用id进行装配;
  4. byType:利用class进行装配;
  5. constructor:利用构造方法进行装配,其实它真正采用的还是byType;

8 Spring中通知的五种形式

前置 后置 异常 最终 环绕;

9 覆写与重载

覆写:
覆写建立在继承的基础上;
它的含义是子类中把父类中的某个方法重新写了一遍,改变了方法体里面的具体操作。使该方法更具自己的特点;
但是对于覆写的限制是:
访问修饰符:不能大于父类;
返回值类型 方法名 参数列表均相同;

重载:
它的含义是在一个类中,可以存在多个重名方法。这些方法的参数列表存在形参个数 位置 类型的不同;
对于访问修饰符和返回值类型它并不做要求;

10 自身以后的学习路线

后端:Java语言基础【√】 -> 面向对象技术【√】 -> 反射 -> 基础类库-> 集合 -> [ -> 异常 -> I/O -> 泛型 -> 注解 ] -> MySQL -> 多线程 -> JVM -> JavaWeb【√】 -> SSM【√】 -> SpringBoot -> 未知领域;
前端:HTML5 -> CSS3 -> JS -> jQuery -> { Ajax + JSON } -> Vue;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值