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

spring学习笔记三

spring 整合mybatis(重点)

mybatis管理的是sqlSessionFactory对象

在这里插入图片描述
在这里插入图片描述

红色框框里的内容可以改。
在这里插入图片描述
在这里插入图片描述

第一步:在pom.xml配置相应坐标

<dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>5.1.47</version>  
</dependency>  <dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-jdbc</artifactId>  <version>5.2.10.RELEASE</version>  
</dependency>  <dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis-spring</artifactId>  <version>1.3.0</version>  
</dependency>

第二步:在config文件夹下创建MybatisConfig.java文件

public class MybatisConfig {  //定义bean,SqlSessionFactoryBean,用于产生SqlSessionFactory对象  @Bean  public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){  SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();  ssfb.setTypeAliasesPackage("com.itheima.domain");//初始化类型别名,可以修改ssfb.setDataSource(dataSource);  return ssfb;  }  //定义bean,返回MapperScannerConfigurer对象  @Bean  public MapperScannerConfigurer mapperScannerConfigurer(){  MapperScannerConfigurer msc = new MapperScannerConfigurer();  msc.setBasePackage("com.itheima.dao");//初始化映射配置,可以改return msc;  }  
}

第三步:测试代码

public class App2 {  public static void main(String[] args) {  ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);  AccountService accountService = ctx.getBean(AccountService.class);  Account ac = accountService.findById(1);  System.out.println(ac);  }  
}

spring整合JUnit

在这里插入图片描述

第一步:在pom.xml导入坐标

<dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.12</version>  <scope>test</scope>  
</dependency>  <dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-test</artifactId>  <version>5.2.10.RELEASE</version>  
</dependency>

第二步: 在test文件下编写测试类

@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(classes = SpringConfig.class)  
public class BookDaoTest {  @Autowired  private BookDao bookDao;  @Test  public void testSave() {  bookDao.save();  }  
}

AOP面向切面编程

在这里插入图片描述
在这里插入图片描述

AOP入门案例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

第一步:导入坐标

spring-context下面绑定了spring-aop的依赖因此导入spring-context的依赖即可。

<dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-context</artifactId>  <version>5.2.10.RELEASE</version>  
</dependency>  <dependency>  <groupId>org.aspectj</groupId>  <artifactId>aspectjweaver</artifactId>  <version>1.9.4</version>  
</dependency>

第二步:在aop文件夹下制作连接点方法

public class MyAdvice {  public void method(){  System.out.println(System.currentTimeMillis());  }  
}

第三步:切入点

//1.告诉spring来加载
@Component  
//2.告诉spring这是做AOP的
@Aspect 
public class MyAdvice { //3.定义切入点@Pointcut("execution(void com.itheima.dao.BookDao.update()) ")  private void pt(){}  //5.把通知跟切入点绑定@Before("pt()")  //4.定义通知public void method(){  System.out.println(System.currentTimeMillis());  }  
}

第四步:SpringConfig.java文件配置注解

@Configuration  
@ComponentScan("com.itheima")  
//@PropertySource加载properties配置文件  
@PropertySource({"jdbc.properties"})  
@EnableAspectJAutoProxy  //配置这个注解
public class SpringConfig {  
}

AOP工作流程

在这里插入图片描述
在这里插入图片描述

AOP切入点表达式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

AOP的通知类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MyAdvice代码:

@Component  
@Aspect  
public class MyAdvice {  @Pointcut("execution(public int com.itheima.dao.BookDao.select())")  private void pt(){}  @Around("pt()")  public Object method(ProceedingJoinPoint joinPoint) throws Throwable {  System.out.println("前。。。。");  Object proceed = joinPoint.proceed();  System.out.println("后。。。。");  return proceed;  }  
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例:测量业务层接口执行效率

在这里插入图片描述

AOP通知获取数据

在这里插入图片描述

AOP通知获取参数数据

在这里插入图片描述

BookDaoImpl的代码

public void save(String title, String author) {  }

AOP通知获取返回值数据

在这里插入图片描述

AOP获取异常数据

在这里插入图片描述

案例:百度网盘密码空格问题

在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/311533.html

相关文章:

  • pyqt5显示任务栏菜单并隐藏主窗口,环境pyqt5+vscode
  • Python序列去重高级指南:保持顺序的高效去重技术
  • python:如何调节机器学习算法的鲁棒性,以支持向量机SVM为例,让伙伴们看的更明白
  • Linux 系统管理-15-OpenSSH 服务管理
  • NLP——Transformer
  • flutter实时播报的桌面应用遇到的问题
  • I2C(韦东山HAL库)
  • 2023年ASOC SCI2区TOP,可修灰狼优化算法RGWO+燃料电池参数辨识,深度解析+性能实测
  • 【无标题】根据11维拓扑量子色动力学模型(11D-TQCD)与当代宇宙学理论的融合分析,宇宙轮回的终结机制及其最终状态可系统论述如下:
  • 商品中台数据库设计
  • WPFC#超市管理系统(4)入库管理
  • 音视频学习(四十八):PCM和WAV
  • 基于深度学习的医学图像分析:使用GAN实现医学图像增强
  • 进阶向:Python生成艺术图案(分形、数学曲线)
  • MySQL索引解析
  • vue3pinia
  • Corrosion2靶机
  • Cyber Weekly #63
  • 搜索引擎评估革命:用户行为模型如何颠覆传统指标?
  • Sklearn 机器学习 数据聚类 用Numpy自己实现聚类
  • 【C++】类和对象(2)
  • 使用keil点亮stc8核心板的灯
  • 逻辑回归 银行贷款资格判断案列优化 交叉验证,调整阈值,下采样与过采样方法
  • MQTT 入门教程:MQTT工具调式
  • 堆----2.前 K 个高频元素
  • VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802
  • 学习笔记:无锁队列的原理以及c++实现
  • Linux 高级 I/O 系统调用详解
  • Vue 响应式基础全解析2
  • Node.js中path模块的使用指南