Spring学习

Spring学习

##Bean的作用域

1.singleton 单列模式,Spring默认的就是单列。
2,scope="prototype " 原型模式。。。每次出来的都是新的对象。
3. requeset ,session application 在web中用到。

Bean的自动装配

三种装配方式

1.xml中显示配置
2.在Java中显示配置
3.隐式的自动装配bean

注解自动装配

注意点 xml的约束,context
配置注解的支持
@autowried

@autowried是按照类型,@resource是按照名字的

这里@AutoWired注解默认应该是Bytype类型查找,找不到再Byname找
扫描摸个包下的注解,
开启注解扫描
@commpoment 组件 放在类上边 这个类被Spring管理。
dao层一般使用@respoistry
service @service
controller @controller
@scope 单列
==## 代理模式
Spring aop的底层是代理模式。
代理模式的分类:
动态代理:
静态代理:

静态代理

角色分析:

  1. 抽象角色:一般使用接口或者抽象对象类来解决。
  2. 真实角色:被代理的角色
  3. 代理角色:代理真是角色
  4. 客户:访问代理对象的角色
    代理模式的有点:
    可以使真实角色的操作更加纯粹
    公共业务交给代理角色
    公共业务发生扩展的时候,方便管理。‘
    缺点:一个真实角色会产生一个代理角色,代码量会翻倍,开发效率降低

动态代理

动态代理和静态代理角色一样
动态代理分为两大类:基于接口的动态代理,基于类的动态代理

  1. 基于接口的 JDK的动态代理
  2. 基于类:cglib
  3. Java字节码 javassist
//接口
public interface Rent {
	 
void rents();
}


 

实现类

public class host implements Rent {

	@Override
	public void rents() {
	 System.out.println("收房租");
		
	}

}

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

代理类
public class proxyA implements InvocationHandler{
	//被代理的接口
	private Rent rent;
	
	public void setRent(Rent rent) {
		this.rent = rent;
	}

	//生成得到代理类
	 public  Object getProxy() {
		 
		return Proxy.newProxyInstance(this.getClass().getClassLoader(), rent.getClass().getInterfaces(), this);
		 
	 }
	
	//调用代理程序
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		//动态代理的本质是反射
		syso(签合同)
		Object result = method.invoke(rent, args);
		syso(付费)
		return result; 
		 }

	 
	
	

}
测试类

public class test {
public static void main(String[] args) {
	host h=new host();
	proxyA ph=new proxyA();
	 
	ph.setRent(h);
	Rent  proxy = (Rent)ph.getProxy();
	proxy.rents();
	//实际是先去调用的invoke方法  所以可以在invoke方法中写自己的代码来增强代码的可读性
	
}
}






需要了解的两个类
proxy 代理类
invocationhandler 调用处理程序
一个动态代理类代理的是一个接口一般就是对应一类事物。

AOP

理解

aop详解方式一:使用Spring的API接口

在这里插入图片描述

方式二:自定义实现
方式三:使用注解实现

spring整合mybatis

spring整合mybatis

在这里插入图片描述

声明式事务

持久化的概念:将数据以某种形式存储到数据库中。
事务acid的原则:

  1. A:原子性 事务式最小的单位,是不可再分割的。
  2. C:一致性:
  3. I:隔离性:多个业务共同操作一个资源,防止数据破坏。
  4. D:持久性:事务一旦提交,无论系统发生什么问题,结果都不会被影响,持久化到数据库。

spring中的事务

  1. 声明式事务:本质AOP
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
       <ref bean="mySessionFactory"/>
   </property>
</bean>
  1. 编程式事务:需要在编程中进行事务管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值