Spring和Junit4,springjdbc,spring AOP

JDBC mysql Junit测试 测试jdbc的连接,可以读取配置文件, 立即下载

一。课程回顾

依赖注入

1、setter注入
需要提供setter方法
XML:

<property name=“属性” value/ref="">
2、构造器注入
构造方法
XML:

<constructor-arg index name type value/ ref>
3、注解注入
导入包 aop
XML:context
<context:component-scan base-packge="">
实例化bean :@service @Reposttory @Controller @Component 默认实例
变量名是类名首字母小写,也可以通过value进行指定
注入标签:
@Resource(name=“beanname”) 默认按照名字注入
@AutoWired:默认按照类型注入
具体使用:标注在属性上 也可以标注在set方法上

4、工厂注入
实例工厂注入
Java代码示例:
public class UserFactory{
public User getUser(){return new User();}
}
XML配置
<bean id =“uf” class="com.spring.factory.UserFactory“”>
<bean id = "userFactory”
factory-bean=“uf” //uf= new UserFactory()
factory-method=“getUser”/> //uf.getUser
// XML: User user = (User)getBean(“UserFactory”)
1、通过bean标签创建
2、通过id指定bean的唯一
3、通过factory-bean指定实例工厂的类全名
4、通过factory-method指定创建对象的方法

静态工厂注入
java代码演示:
public class UserFactory{
private UserFactory(){}
public static User getUser(){return new User();}
}
XML配置
<bean id = “userFactory”
class=“com.com.spring.factory.UserFactory” //User userFactory=(User)UserFactory.getUser();

fatory-method="getUser"/
// XML: User user = (User)getBean("UserFactory")

1、通过bean标签创建
2、通过id指定bean的唯一
3、通过class指定静态工厂的类全名
4、通过factory-method指定创建对象的方法

二。Spring和Junit4集成

(一) 引入jar包

spring-test-4.3.9 RELEASE.jar

(二)Junit4 常用注解

@Test:相当于1个测试用例,可执行方法
@Before:在每个测试用例执行之前都会被执行
@After:在执行每个测试用例之后都会被执行
@BeforeClass:要求标注的测试用例方法必须是static方法,在所有测试用例被执行之前被执行,仅被执行一次
@AfterClass:要求标注的测试用例方法必须是static方法,在所有测试用例被执行之后被执行,仅被执行一次
@lgnore 忽略当前测试用例 不被执行

(三)Spring+Junit4 编写程序

@RunWith(SpringJunit4ClassRunner.class)
@ContextConfiguration(“classpath:applicationContext.xml”)

三. SpringJdbc相关

(一)引入jar包

Spring-jdbc
Spring-tx

(二)在Spring容器中配置数据库连接

<!–加载property文件–>
<context:property-placeholder
location=“jdbc.properties”/>
<! --配置数据库连接->
<bean id = “dateSource”
class=“org.springframework.jdbc.datesource.DriverManagererDateSource>
property name = “driverClassName”
value =”jdbc.driver"><propertyname="url"value="{jdbc.driver}" > <property name="url" value="jdbc.driver"><propertyname="url"value="{jdbc.url}"/>
<property name=“username” value="jdbc.uname"/<propertyname="password"value="{jdbc.uname}"/ <property name="password" value="jdbc.uname"/<propertyname="password"value="{jdbc.pwd}"/>
<property name=“loginTimeout” value=“30”/

(三)配置JdbcTemplate,并且和数据库相关联

oralce DB

db.driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.2.247:1521:orcl
user=shop
password=shop

#mysql DB
#driver=com.mysql.jdbc.Driver
#url=jdbc:mysql://localhost:3306/mysql?characterEncoding=utf8
#user=root
#password=root
<!配置jdbc模板–>

class=“org.springframework.jdbc.core.JdbcTemplate”>
<property name=“dataSource” ref=“dataSource”/

(四)CRUD

增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)
在这里插入图片描述

(五)常用数据库连接池

C3P0(开源),DBCP(apache),Druid(阿里巴巴)

在这里插入图片描述

四。 Spring AOP

Task1:
转账业务:
王五转给张三1000元(要求实现)

update user set money = money-1000 where username=“王五”
update user set money = money+1000 where username=“张三”

JDBC事务处理
1、conn.setAutoCommit(false);关闭事务默认提交设置
2、sql1 sql2 全都成功
conn.commit();
conn.setAutoCommit(ture);
3、 sql1 成功 sql2不成功;
进行回滚
conn.rollback();
(一)了解AOP

AOP,aspect Oriented programming 面向切面编程
功能:让关注点代码与业务代码分离

(二)代理模式

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问模式:即通过代理对象访问目标对象。这样的好处:可以在目标对象实现的基础上,增强额外的功能操作。(扩展目标对象的功能)
代理模式的关键点:代理对象与目标对象。
Java中三种代理模式
静态代理。动态代理。Cglib代理

1.代理模式

代理对象:增加额外功能之后的对象
被代理对象:(目标对象):核心业务所在对象

静态代理:

1、要求有一个接口
2、目标对象,代理对象都要实现同一个接口

动态代理:

1、要求有一个接口
2、创建目标对象(实现接口)
3、创建“代理对象的工厂”

CGLIB代理:

静态代理:在这里插入图片描述总结静态代理:

1)可以做到在不修改目标对象的功能前提下,对目标对象功能扩展。
2)缺点:因为代理对象,需要与目标对象实现一样的接口,所以会有很多代理类,类太多。
一旦接口增加方法,目标对象与代理对象都需要维护。
可以使用动态代理来解决。

动态代理:

1)代理对象,不需要实现接口;
2)代理对象的生成是利用JDKAPI,Proxy动态的内存中构建代理对象(需要我们指定创建代理对象/目标对象 实现接口的类型)
3)动态代理,也可以称为JDK代理或者接口代理

1、获取代理对象
Proxy.newProxylnstance(Class classloader,Class[] interfaces,lnvocationHandeler h);
参数1:classLoader 目标对象的classLoader
参数2:interfaces 目标对象实现的接口列表
参数3:h lnvocationhandler对象 事件处理器
2、通过代理对象调用目标方法

在这里插入图片描述动态代理总结:
代理对象不需要实现接口,但是目标对象一定要实现接口;否则不能用动态代理

思考:
有一个对象,想要功能扩展,但目标对象没有实现接口,怎样功能扩展?
Class UserDaoImpl{}
//子类的方式
Class subclass extends UserDaoImpl{}
//以子类的方式实现(cglib代理)

CGLIB代理

Cglib代理也叫做子类代理。在内存中构建一个子类对象从而实现对目标对象功能的扩展。
1)需要引入spring-core-4.2.6.jar
2)引入包后就可以在内存中动态构建子类
3)代理的类不能为final
4)目标对象的方法如果为final/static,那么就不会被拦截,即不会执行对象的方法。

在Spring的AOP编程中,
如果加入容器的目标对象有实现接口,就用jdk代理
如果目标对象没有实现接口,就用cglib代理
在这里插入图片描述在这里插入图片描述总结 面试题目:
代理理解:在原有目标对象基础上额外增强一些功能
优点:便于维护

  • 静态代理: 目标对象 代理对象都要求实现相同接口-----》如果目标对象实现多个接口 代理对象维护起来比较麻烦怎么处理?
  • 动态代理:目标对象实现接口 代理对象不需要实现接口–》如果目标对象没有实现接口怎么办?
  • cglib代理:采用继承方式 通过继承目标对象 进行子类扩展 从而生成对象

(三)AOP作用

AOP 面向切面的思想,把核心业务与增强功能分开,降低模块之间的耦合度,形成了可拔插式的结构,在保证核心业务执行不受影响的条件下,可以选择性地插入增强功能,达到扩展功能的目的。

【华为OD机试】真题-小明减肥(Java) 摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字) 阅读详情

相关推荐

用C#完成最小二乘法拟合平面方程,再计算点到面的距离

【代码】用C#完成最小二乘法拟合平面方程,再计算点到面的距离。

MechMaster 647

Spring整合Junit4和Junit5

【代码】Spring整合Junit4。

qq_57907966的博客 740

【OpenSearch】从零到一:手把手搭建OpenSearch与Dashboard可视化平台

本文提供了一份详细的OpenSearch与Dashboard可视化平台从零搭建指南。内容涵盖环境准备、系统调优、核心服务安装配置、Dashboard部署与汉化,以及生产环境安全加固建议,帮助用户快速构建一个功能完整的搜索与分析平台。

devops8pract的博客 617

Spring与junit4集成测试

一。应用场景:普通java web集成spring test,   项目结构:使用的是加入jar的方式,不是maven加入依赖的方式   注意:如果是引入jar包的方式,例如:spring-test4.0.5.jar 和junit4.12.jar的方式,   如果是使用的是junit4.12.jar的版本,要加入hamcrest-core1.3.jar包,否则报如下错误: ja...

ai21897的博客 258

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1162

Word公式一键转MathType保姆级教程(附omml2mml.xsl报错终极解决方案)

本文提供Word公式一键转MathType的保姆级教程,重点解决常见的omml2mml.xsl报错问题。通过详细分析报错原因、官方解决方案实操步骤及转换后格式优化技巧,帮助用户高效完成公式转换,适用于科研论文和商业文档编辑。

weixin_30082367的博客 555

Spring整合Junit4进行单元测试

一.加入依赖包 使用spring的测试框架需要加入以下依赖包: JUnit 4 (官方下载:http://www.junit.org/) Spring Test (Spring框架中的test包) Spring 相关其他依赖包(不再赘述了,就是context等包) 如果使用maven,在基于spring的项目中添加如下依赖: junit

勿忘初心的博客 10万+

最新版 Akamai 逆向 风控破解

经过测试,捷星 jetstar.com,德州仪器 ti.com,w6 wizzair.com,还有一些航空公司的都是可以实现一个并发的有需要的可以。

m0_72605044的博客 6623

使用jUnit4测试Spring4

问题: 今天在使用spring框架做项目的时候发现一个问题: 自动注入@Autowired 在jUnit使用没有效果但是使用一般手动注入getBean的方法的时候是有效果的。 起先我以为是jUnit的中不能够自动注入Spring中的对象,折腾了一段时间在网上搜索解决方法,找到了一篇文章 http://blog.youkuaiyun.com/shunshoutuya/article/details/1795

h 2338

博途S7-1200与昆仑通态MCGS纯仿真联调实战指南

本文详细介绍了博途S7-1200与昆仑通态MCGS纯仿真联调的实战指南,包括环境搭建、配置步骤、通信桥接及故障排除。通过TIA Portal和MCGS Pro搭建的仿真环境,可实现80%以上的基础功能验证,适用于工业自动化学习和开发,大幅降低硬件投入成本。

weixin_26834815的博客 439

Juniper SRX PPPoE配置

set interfaces pp0 unit 1 ppp-options chap default-chap-secret 拨号用户名密码。set interfaces pp0 unit 0 ppp-options chap default-chap-secret 拨号密码。set interfaces pp0 unit 0 ppp-options chap local-name 拨号用户名。6号口接运营商进行拨号。

Jian Sun_的博客 750

使用JUnit4测试Spring

Spring环境下的JUnit4测试 1,下载所需jar包: spring-test-3.2.0.RELEASE.jar junit-4.11.jar commons-dbcp-1.4.jar   2,配置Spring数据源: spring-dao-test.xml spring-service-test.xml 因为测试用例不是运行在Server环境下,不能通过JNDI取得数据

zhangzikui的专栏 5万+

工业级4~20mA转0~3V信号调理电路原理图设计,已量产(电流传感器)

在工业现场,4~20mA 电流信号是模拟量传输的 “老熟人”—— 抗干扰强、能跑长距离,但嵌入式 MCU 的 ADC 一般只认电压信号。最近做项目时,我设计了一款能覆盖 0~25mA(含超量程冗余)、线性输出 0~3V 的调理电路,经过现场调试挺稳定,分享下细节。

不脱发的程序猿 527

Spring AOP和事务管理 XML的实现方式

一。内容回顾 (一)。 junit4 @BeforeClass @AfterClass @Test Spring和junit集成: @Runwit(SpringJunit4ClassRunner.class) @ContextConfiguration(“classpath:xml”) (二)Spring jdbc List list = new ArrList(); Manager man = ...

java_dingbg的博客 318

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Spring

Spring是一个IOC(DI)和AOP容器框架。 Spring的优良特性: 1、非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API 2. 控制反转:IOC——Inversion of Control,指的是将对象的创建权交给Spring去创建。使用 Spring之前,对象的创建都是由我们自己在代码中new创建。而使用Spring之后。对象的创建都 是由给了Spring框架。 3. 依赖注入:DI——Dependency Injection,是指依赖的对象不需要手动调用setXX方

weixin_49866322的博客 139

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java Spring框架搭建(基于eclipse)

Spring简介 spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还能帮其他框架管理对象. aop支持 ioc思想 spring jdbc aop 事务 junit 测试支持 spring搭建 1.导包 我们需要导入基础核心的四个包...

QG_zhang的博客 718

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring JDBC和事务控制

​ Spring 框架除了提供 IOC 与 AOP 核心功能外,同样提供了基于JDBC 的数据访问功能,使得访问持久层数据更加方便。想要使用 Spring JDBC 环境,需要将JDBC整合到Spring中。构建项目:普通的java项目即可 添加 jdbc 配置文件 在src/main/resources目录下新建db.properties配置文件,并设置对应的配置信息放在配置文件的目的:后续修改的时候直接到配置文件中修改即可。 以下为可选配置 编写 spring 配置文件 编写spring配置文件:app

持续学习,持续更新 2707

Spring学习文档——Spring中基本概念的总结与介绍

前言:本文档是本人自学Spring时候手动码的,里边参考了各路大神的文章,我做了一个系统的整合。好好学习,共同进步!! 一、Spring介绍 1.Spring的作用 Spring负责项目中的所有对象,可以看做是项目对象的管家。正是因为Spring框架是属于容器性质的,容器中装 什么对象就有什么功能,所以可以一站式开发。不仅不排斥其他框架,还能帮助其他框架管理对象。 2.Sping中所用到的...

weixin_41532316的博客 511

Spring AOP日志收集

Spring AOP日志收集 1.创建maven web项目工程 2.配置pom.xml依赖 3.补全项目结构 4.创建application.xmI文件spring配置文件 5.创建实体类(即pojo层,dao层代码,service层代码) 5.1创建pojo包里面创建学生类Student 为学生类添加相应的参数:序号id,学生姓名sname,学生学号sno,学生电话phone,并生成有参及无参、get和set以及同string构造方法 5.2dao层 创建StudentDao接口和Impl类

二三是廿三的博客 219

Spring框架----Spring框架的基本概念

1.spring 是什么 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IOC(Inverse Of Control: 控制反转)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多 著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。 mybatis是持久层框架,spr

Java硬件工程师的博客 2239

Spring4 Jar包详解

Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects:Spring提供的对AspectJ框架的整合 Spring Beans:Spring IOC的基础实现,包含访问配置文件、创建和管理bean等。 Spring Context:在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJ

达拉斯母牛 1万+

Spring简介

Spring是一个管理对象的容器。它不排斥其他框架,可以帮助其他框架管理对象 Spring一站式框架: aop支持 ioc思想 Spring jdbc aop事务 junit测试支持

玉爷的博客 167

Spring框架结构介绍

什么是Spring Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第...

jamieblue1的博客 550

Spring利用POM引入ASPECTS依赖实现代理模式-----Spring框架

Spring利用POM引入ASPECTS依赖实现代理模式-----Spring框架

在经历了无数个黑夜之后,我决定自己成为太阳 485

springJDBC创建步骤

1、创建空Maven工程,添加pom.xml依赖包 加入依赖包之后,IDEA会提示下载依赖,点击下载依赖即可。 下载完毕之后点击Maven选项卡,点击Dependencies即可以看到已经下载好的依赖包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</mave

qq_45672137的博客 454
上一篇: spring:setter注入构造器注入注解注入
下一篇: Spring AOP和事务管理 XML的实现方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值