ssm模糊知识点整合

一、参数绑定常用注解

  1. @RequestParam:用于将请求参数绑定到你的方法参数上。

  2. @PathVariable:用于将路径变量绑定到你的方法参数上。

  3. @RequestBody:用于将请求主体绑定到你的方法参数上,通常用于绑定POST请求的JSON或XML数据。

  4. @RequestHeader:用于将请求头部信息绑定到你的方法参数上。

  5. @CookieValue:用于将Cookie值绑定到你的方法参数上。

主要的区别在于:

  • 绑定的位置不同:@RequestParam 是请求参数,@PathVariable 是路径变量,@RequestBody 是请求体

二、mybatis关联查询

1、resultType

作用:将查询结果按照SQL列名与实体类属性名一致性映射到实体类对象中。 场合:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可 直接使用resultType将每一条记录映射到实体类中,在前端页面遍历list(list中是实体类)即可。

2、resultMap

使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。

3、association

作用:将关联查询信息映射到一个实体类对象中。 场合:为了方便查询关联信息可以使用association将关联信息映射为当前对象的一个属性,比如:查询 订单以及关联用户信息。

4、collection

作用:将关联查询信息映射到一个list集合中。 场合:为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权 限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的 菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。如果使用resultType无法将查询 结果映射到list集合中。

5、resultMap的继承

resultMap标签可以通过extends属性来继承一个已有的或公共的resultMap,避免重复配置的出现,减 少配置量。

XML 复制代码
<!-- 父resultMap标签-->
<resultMap id="baseResultMap" type="com.gs.entity.Orders">
    <id column="id" property="id"/>
    <result column="order_number" property="orderNumber"/>
    <result column="total_price" property="totalPrice"/>
    <result column="status" property="status"/>
    <result column="user_id" property="userId"/>
</resultMap>
<!-- 继承父resultMap标签中的配置,避免重复配置 -->
<resultMap id="subResultMap" type="com.gs.entity.Orders" 
extends="baseResultMap">
    <association property="users" javaType="com.gs.entity.Users">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
        <result column="realname" property="realname"/>
    </association>
</resultMap>

三、Bean对象生命周期(后续需详细补充)

  1. 实例化(Instantiation): Spring容器通过反射或者工厂方法创建Bean的实例。

  2. 属性赋值(Populate Properties): 为Bean的属性设置值和对其他Bean的引用。

  3. 初始化(Initialization): 如果Bean实现了BeanNameAware, BeanFactoryAware, ApplicationContextAware等接口,会调用对应的方法。然后,如果BeanPostProcessor被注册,相应的postProcessBeforeInitialization()方法会被调用。最后,如果Bean实现了InitializingBean接口,其afterPropertiesSet()方法会被调用;或者,如果Bean使用init-method属性声明了初始化方法,这个方法也会被调用。

  4. 使用(In use by application): Bean现在可以被应用程序使用了。

  5. 销毁(Destruction): 当容器关闭时,如果Bean实现了DisposableBean接口,其destroy()方法会被调用;或者,如果Bean使用destroy-method属性声明了销毁方法,这个方法也会被调用。

四、spring boot自动装配(后续需详细补充)

(一)、核心注解

  1. @SpringBootApplication :这是一个组合注解,包含了 @Configuration 、 @EnableAutoConfiguration 和 @ComponentScan 。其中 @EnableAutoConfiguration 是实现自动装配的关键注解。

springboot是一个脚手架工具,约定大于配置。我们只需要按照springboot的规范来开发,就能减少很多配置,当需要开发web项目的时候

@SpringBootApplication(有三个子注解,分比为1、2、3)

1:@SpringBootConfiguration (有一个子注解:Configuaration)

1.1:@Configuaration (有一个子注解:Component)

1.1.1:@Component (作用:就是启动类声明为bean)

2:@EnableAutoConfiguration (开启自动注入:有两个子注解)

2.1:@AutoConfigurationPackage (自动配置包:有一个子注解,import)

2.1.1:@Import({Registrar.class}) (没有子注解)

2.2:@Import({AutoConfigurationImportSelector.class}) (没有子注解)

3:@ComponentScan (组件扫描:没有子注解,作用:包扫描项目包路径)

在这三个注解中,第一和第三都没有太大的意思,所以我们主要看第二个注解就好了。在第二个注解中使用了两个@import注解。就是这两个注解解释了自动装配的含义

(二)、自动配置类

Spring Boot 在启动时会扫描类路径下的 META-INF/spring.factories 文件,这个文件中定义了大量的自动配置类。自动配置类通常以 XXXAutoConfiguration 的形式命名。

例如,当引入了 Spring Boot Web 模块依赖时,会自动加载 SpringWebMvcAutoConfiguration 自动配置类,它会根据类路径下是否存在相关的类(如 DispatcherServlet )来决定是否进行 Web 相关的配置,如配置视图解析器、静态资源处理等。

三、条件装配

自动配置类通常使用 @Conditional 注解来进行条件装配。这些条件可以基于类路径上是否存在特定的类、系统属性是否满足特定条件等。

例如, @ConditionalOnClass 注解表示只有当类路径上存在特定的类时才会进行自动配置。

四、导入其他配置

自动配置类还可以通过 @Import 注解导入其他配置类或组件,进一步扩展自动装配的功能。

总之,Spring Boot 的自动装配原理是通过扫描特定的配置文件,加载自动配置类,并根据条件进行装配,从而实现了快速、便捷的开发体验,减少了大量的手动配置工作。

相关推荐
泡海椒24 分钟前
JQuick-SQL REST API 数据接入:应用层调用接口后注册分析表
数据库·sql·1024程序员节
Random Glow1 小时前
聚簇索引 vs 二级索引:回表、覆盖索引、索引下推
数据库·mysql·性能优化·innodb·1024程序员节·索引优化
要开心吖ZSH2 小时前
一次线上锁风暴复盘:号源表大范围 DELETE 的隐患与分批删除改造
数据库·mysql·行锁·1024程序员节·间隙锁·lockwaittimeout
l1t3 小时前
在windows中测试musql数据库
数据库·sqlite·go·1024程序员节
鬼手点金4 小时前
从 API 消息到模型 Token:Chat Template
java·前端·javascript·数据库·人工智能·深度学习·1024程序员节
CRMEB系统商城4 小时前
Redis + 消息队列 + 连接池:CRMEB PRO 性能优化的三驾马车
大数据·数据库·人工智能·小程序·php·1024程序员节
鸽芷咕4 小时前
KingbaseES SQL 调优六步法:定位、诊断、下药、验证,一步都别省
数据库
黄俊懿5 小时前
【架构师从入门到进阶】第七章:缓存和存储的优化思路——第一节:缓存概述
数据结构·数据库·分布式·缓存·架构·系统架构·1024程序员节
John_Hui5 小时前
MySQL 进阶知识
数据库·sql·mysql·1024程序员节