当前位置: 首页 > news >正文

ssm-day06 ssm整合

从springMVC总结再回顾一下 60节

整合就是应用框架,并且把这个框架放到IOC容器中

web容器:装springMVC和controller相关的web组件

root容器:装业务和持久层相关的组件

子容器可以引用父容器中的组件,父容器不能调子容器

一个容器可以指定多个配置类

spring-aop不用导,因为他被spring-context依赖传递了

@Data 是 Java 中 Lombok 库提供的一个注解,用于简化实体类的代码编写。它通过自动生成常见的 getter、setter 方法、toString() 方法、equals()hashCode() 方法,减少手动编写样板代码的工作量。

logback日志输出 下去了解一下

实现一个接口WebMvcConfigurer作用提供对应的方法简化配置springmvc相关的组件

之前是自己new这么配置的,现在只需要加一个注解@EnableWebMvc,就会自动配handlerMapping handlerAdapter 和json处理器

第一个黄框可以进行静态资源处理,相当于二秘书

蓝框补全

业务层配置类:service、aop、tx

蓝框是对应mybatis的事务实现 

@EnableTransactionManagement代表开启事务注解支持

???怎么注入连接池

1.调用Bean方法 2.在形参列表上声明一个对应类型,由ioc容器帮我们注入连接池

实战找问题再总结

这段代码是用Java配置来设置Spring框架中的事务管理。让我们逐步解析这段代码:

1. @EnableTransactionManagement

这个注解是用来启用基于注解的事务管理支持的。当你在配置类上使用了 @EnableTransactionManagement,它会激活对 @Transactional 注解的支持,使得你可以在服务层的方法或类上使用 @Transactional 来声明事务边界。

2. ServiceJavaConfig 类

这是一个普通的Java配置类,用来替代传统的XML配置文件。你可以在这里定义各种bean、配置事务管理器、AOP切面等。根据Spring的约定,配置类通常带有 @Configuration 注解(虽然在这个例子中没有显示,但在实际应用中应该是有的),表明这是一个Spring配置类。

3. transactionManager 方法

这个方法负责创建并返回一个 TransactionManager 实例,具体来说是一个 DataSourceTransactionManager,这是Spring提供的用于管理JDBC数据源事务的实现。

参数
  • DataSource dataSource: 这个参数是通过依赖注入的方式传入的。通常,在Spring配置中,你会有一个 DataSource bean,这个方法将会自动接收到该bean作为参数。DataSource 是JDBC的一部分,表示连接到数据库的数据源。
方法体
  • 创建了一个 DataSourceTransactionManager 的实例,并设置了它的 dataSource 属性。
  • setDataSource(dataSource) 方法将给定的数据源与事务管理器关联起来,这样当有事务需要被管理时,DataSourceTransactionManager 就知道要使用哪个数据源来进行事务的操作,比如开始、提交或回滚事务。
返回值
  • 返回的是 TransactionManager 类型的对象,但实际上是 DataSourceTransactionManager 的实例。Spring的事务管理基础设施可以识别并使用这个对象来管理事务。

4. 隐含的Bean定义

虽然代码中没有显式地使用 @Bean 注解,但是根据Spring的规则,如果在一个 @Configuration 类中定义了一个非私有的、返回值不是 void 的方法,那么这个方法会被认为是一个bean定义工厂方法。也就是说,每次Spring容器启动时,都会调用 transactionManager 方法,并将其返回的对象注册为一个名为 transactionManager 的bean。

完整的例子

为了使这段代码更加完整,下面是一个可能的配置类的完整示例,包括 @Configuration@Bean 注解:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

@Configuration
@EnableTransactionManagement
public class ServiceJavaConfig {

    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }

    // 其他bean定义...
}

在这个完整的例子中,@Configuration 告诉Spring这是一个配置类,而 @Bean 注解则明确指出了 transactionManager 方法应该被视为一个bean定义。这确保了Spring能够正确地处理和管理由这个方法返回的 PlatformTransactionManager 实例。

springIOC容器管理的组件都是为了全局复用的,用一次就丢掉的这种不用加(SqlSessionFactoryBuilder)

SqlSessionFactory会缓存mybatis的配置文件

整合包的作用就是提供各种FactoryBean,封装它们自己框架创建api的逻辑过程

这里核心就1个问题:怎么更加方便的拿到SqlSessionFactory 和 Mapper

持久层配置类:连接池、sqlSessionFactory、Mapper代理对象

第一种mybatis配置方式-xml中不再写数据库链接信息(连接池DruidDataSource和mapper接口的包指定)

保留mybatis-config.xml(分页插件、别名、驼峰映射)

@Configuration 配置类注解

@PropertySource("classpath:jdbc.properties")读取外部的配置文件

@Value 是 Java 中用于从配置文件、环境变量或直接赋值中注入值的注解,通常与 Spring 框架一起使用。它可以帮助开发者将外部配置的属性值注入到类的字段中,从而实现代码与配置的分离。

创建一个连接池

getObject方法会把返回的对象自动加入到ioc容器中

注释中是对象不是兑换

【弹幕】将SqlSessiongFactory放入,通过它得到SqlSession,然后得到Mapper代理对象,但这个步骤直接交给IOC容器去解决。咱们之间把两者放入IOC就行

zijiu阿大哥 这块真的懵 

第二种mybatis配置方式-完全配置类

去掉 mybatis-config.xml

不保留外部配置文件,全部mybatis的属性都在代码中设置

【弹幕】上节讲xml下怎么配置SqlSessionFactory和Mapper,一个配置类配置数据源,一个配置类配置SqlSessionFactory和Mapper

这个实操第一次失败,回头再搞

初始化配置类

/代表拦截所有

【美美回顾】Postman介绍

又又没了 无力回天了

四个接口的增删改查

前端对应的依赖管理的工具:npm

配置镜像 提高下载速度。但是我的npm版本更新不了??

讲义里面是错的,正确网址

#设置阿里镜像源
npm config set registry http://registry.npmmirror.com

package.json相当于maven里面的pom.xml文件,这里面表明它需要哪些第三方的依赖

ok呀 把之前的低版本删了也没解决  先过吧后面有需要再下载一次

R是统一结果集, 也就是统一你Controller返回的json格式

Slf4j 是 lombok 提供的接口,logback是实现。

就是一系列对象嵌套,感觉和之前的一对多多对一的那个知识点很香。ok实际上也就是返回一个R对象,R对象里面有一个pagebean

加两注解用于校验

前端向后端发请求的过程就是联调

后台可以添加设置,允许跨域访问,就是非同域进行访问

这个注解也可以加到指定接口上

这块过了快两月

先总结一下疑惑

1.代码中注解含义、作用

2.两个小测试没跟(每次idea就出错)

3.nodejs删了低版本的还没好

4.postman使用

5.初始化类原理?

ok磨磨唧唧开学了玩大了

相关文章:

  • SpringBoot 项目配置动态数据源
  • 【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道
  • Apache Logic4j 库反序列化漏洞复现与深度剖析
  • 【蓝桥杯集训·每日一题2025】 AcWing 6135. 奶牛体检 python
  • HarmonyOS学习第3天: 环境搭建开启鸿蒙开发新世界
  • java练习(35)
  • 如何用好 DeepSeek 工具:入门指南
  • 【CSP/信奥赛通关课(一):C++语法基础】
  • PrimeTime:工具简介
  • 算法模板(二分法开区间模板,二分法闭区间模板)
  • 【华三】STP的角色选举(一文讲透)
  • 市场趋势中突破确认的多维度判断方法
  • 【简历优化】性能调优 — 编程性能调优篇
  • Linux远程kill进程及$处理
  • java练习(36)
  • 如何在 React 中测试高阶组件?
  • python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
  • Docker挂载数据显式挂载和隐式挂载的区别
  • DeepSeek掘金——VSCode 接入DeepSeek V3大模型,附使用说明
  • ubuntu ffmpeg 安装踩坑
  • 国外 网站 模板/互联网去哪里学
  • php做网站不兼容ie8/百度官网下载安装
  • 建设 政务数据共享网站/软件外包公司是什么意思
  • 怎么优化一个网站/重庆森林电影高清在线观看
  • 网站策划和运营/百度新闻客户端
  • 国内适合个人做外贸的网站有哪些/360seo关键词优化