1.简述@Autowired和@Resource的区别
@Autowired 是 Spring 框架中的注解,用来标注需要自动装配的 bean。
@Resource 是 Java 自带的注解,用来标注需要自动装配的 bean。
@Autowired 是按类型装配,如果有多个同类型的 bean,会抛出异常;
@Resource 是按名称装配,如果名称不存在,会使用类型装配。
2.将一个类声明为Spring的 bean 的注解有哪些?,并简要说明每个注解的作用
@Component :通用的注解,可标注任意类为 Spring 组件。如果一个Bean不知道属于哪个层,
可以使用 @Component 注解标注。
@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao层。
@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前
端页面。
3.mybatis的动态sql语句标签有哪些?
if:根据条件判断是否包含特定的SQL语句片段。
choose/when/otherwise:类似于Java中的switch语句,根据条件选择执行不同的SQL语句片段。
trim:用于去除或添加SQL语句片段的内容,在生成SQL语句时非常有用。
where:用于在生成SQL语句时根据条件添加WHERE关键字和相关的查询条件。
set:用于在生成UPDATE语句时根据条件添加SET关键字和相关的更新字段。
foreach:用于遍历集合或数组,并根据集合中的元素生成SQL语句片段。
bind:用于将一个表达式绑定到一个变量上,以便在后续的SQL语句中重复使用。
4.简述java的类怎样实现克隆,什么是深拷贝和浅拷贝?
在Java中,可以通过实现Cloneable接口和重写clone()方法来实现对象的克隆。Cloneable接口是一个标记接口,没有任何方法,只是用来标识该类可以被克隆。clone()方法是一个被Object类定义的方法,用于创建并返回当前对象的副本
浅拷贝(Shallow Copy):通过浅拷贝,克隆对象将会复制原始对象的所有字段,包括基本数据类型和引用类型的字段。但是,对于引用类型的字段,仅复制引用而不复制引用对象本身。因此,原始对象和克隆对象将共享同一引用对象。
深拷贝(Deep Copy):克隆对象将会复制原始对象的所有字段,包括基本数据类型和引用类型的字段。但是,对于引用类型的字段,不仅复制引用,还会复制引用对象本身。因此,原始对象和克隆对象将拥有独立的引用对象。