Java 42---Spring框架(3)

导读

1.Spring整合JDBC
2.代理模式
3.使用maven工具整合SSH

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

Spring整合JDBC

Spring事务管理

1.平台事务管理器PlatformTransactionManager,Spring管理事务都是通过平台事务管理器
2.实现类:DataSourceTransactionManager用来管理jdbc/Mybatis/iBatis等事务
3.HibernateTransactionManager用来管理hibernate事务
4.JpaTransactionManager管理Jpa事务

要导入的jar包

在这里插入图片描述
spring.xml配置文件
在这里插入图片描述
在这里插入图片描述

Spring整合Jdbc
1.使用JdbcTemplate对象
2.创建JdbcTemplate对象需要注入DataSource对象

在这里插入图片描述

改进版:
加入:
在这里插入图片描述
在这里插入图片描述

Spring管理事务通过两类方式

⚠️在业务层控制事务
1.编程式事务管理(已不再使用)
2.声明式事务管理
(1)基于代理类的声明式事务管理(不再使用)
在这里插入图片描述
在这里插入图片描述
(2)基于aop的声明式事务管理
在这里插入图片描述

在这里插入图片描述
(3)基于注解的声明式事务管理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代理模式

在这里插入图片描述

1.静态代理
2.基于JDK的动态代理,是由jdk提供,要求被代理类一定得有接口
3.基于cglib的动态代理,需要引入第三方jar包,被代理类不需要有接口
4.动态代理,是在运行期动态生成一个类去代理目标类
5.Spring中的aop是基于jdk和cglib两种动态代理

静态代理

在这里插入图片描述

接口
ICar.java

package com.hala.test;

public interface ICar {
	
	
	public void move();

}

接口实现Car.java

package com.hala.test;

public class Car implements ICar{

	@Override
	public void move() {
		// TODO Auto-generated method stub
		
		System.out.println("汽车在移动!");
		
	}

}

代理类CarProxy.java

package com.hala.test;

public class CarProxy implements ICar{
	
	private ICar car;
	
	public CarProxy(ICar car) {
		this.car=car;
	}

	@Override
	public void move() {
		// TODO Auto-generated method stub
		System.out.println("开启前");
		car.move();
		
		System.out.println("开启后");
	}
	
	
}

测试类 CarTest.java

package com.hala.test;

import org.junit.jupiter.api.Test;

public class CarTest {
	
	
	
	
	@Test
	public void move() {
		ICar car1=new Car();
		ICar car2=new CarProxy(car1);
		car2.move();
	}
	
	
//	@Test
//	public void test() {
//		ICar car1=new Car();
//		ICar car2=(ICar)new LogProxy().getObj(car1);
//		car2.move();
//	}

}

JDK动态代理

在这里插入图片描述

接口
ICar.java

package com.hala.test;

public interface ICar {
	
	
	public void move();

}

接口实现Car.java

package com.hala.test;

public class Car implements ICar{

	@Override
	public void move() {
		// TODO Auto-generated method stub
		
		System.out.println("汽车在移动!");
		
	}

}

代理类LogProxy.java

package com.hala.test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class LogProxy implements InvocationHandler{
	
	private Object obj;//目标对象(被代理类对象)
	
	
	//获取代理类对象
	public Object getObj(Object obj) {
		this.obj = obj;
		
		return Proxy.newProxyInstance(
				obj.getClass().getClassLoader(), 
				obj.getClass().getInterfaces(), this);
	}



	//执行代理方法
	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		// TODO Auto-generated method stub
		System.out.println("记录日志开始...");
		Object object=method.invoke(obj, args);
		return object;
	}

}


测试类 CarTest.java

package com.hala.test;

import org.junit.jupiter.api.Test;

public class CarTest {
	
	
	
	
//	@Test
	public void move() {
		ICar car1=new Car();
		ICar car2=new CarProxy(car1);
		car2.move();
	}
	
	
	@Test
	public void test() {
		ICar car1=new Car();
		ICar car2=(ICar)new LogProxy().getObj(car1);
		car2.move();
	}

}


使用maven工具整合SSH

maven和spring很像,spring是把对象放入到一个容器,需要哪个注入哪个,maven是一个jar包容器,需要哪个取哪个,让程序更小一点

官网链接

在这里插入图片描述
mac版配置

配置maven环境变量(首先要确保java环境变量已经配置好):

    1⃣️ 先双击Binary tar.gz archive文件,解压到文件目录下;(放在用户目录下就好)

    2⃣️ 查看文件路径:1)首先,打开终端;

             2)再将apache-maven-3.5.0 文件夹拖入到终端内,文件夹路径就会显示出来;

    3⃣️ 在终端打开配置环境变量到文件:

      1)在终端输入  vim ~/.bash_profile,进入到环境变量配置文件里面;

      2)进入后,是read模式,按下 i (编辑)键,进入insert模式;

       3)将环境变量加入其实,环境变量如下:

              export MAVEN_HOME=/Users/robbie/apache-maven-3.3.3

              export PATH=$PATH:$MAVEN_HOME/bin

       4)按下 ESC,退出insert模式;
       5)输入 :wq (保存修改)退出当前文件;
       6)使修改的环境变量bash_profile文件生效,输入 source .bash_profile,按下Enter键即可.

在这里插入图片描述

在这里插入图片描述

 <localRepository>/Users/你的mac名字/maven</localRepository>

在这里插入图片描述

 <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

配置完保存,接下来配置ecplise

在这里插入图片描述

在这里插入图片描述

创建一个maven工程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
完成创建后需要修改jre
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后要消除项目上的❌,这里主要是因为缺少关于servlet的jar包,以前的web项目中tomcat中自带这个jar包,现在需要自己添加

官网

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
复制这段代码到下图junit位置后

<dependency>
    	<groupId>javax.servlet</groupId>
    	 <artifactId>javax.servlet-api</artifactId>
   		 <version>3.1.0</version>
    	<scope>provided</scope>
</dependency>

在这里插入图片描述

保存后❌消失

整合SSH

maven整合SSH其实就是在上边搜servlet的网站直接搜就行,加入方法完全一样,需要什么jar包就搜什么,然后添加,包括struts2-core,hibernate-core,spring-context,spring-tx,spring-orm,jstl,c3p0等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值