事务控制 及其 用动态代理增强功能

1)单例对象,如果多线程访问的情况下,有线程安全的问题;

2)解决IOC依然有XML的问题;

3)config.SpringConfiguration,该类是一个配置类,其作用相当于bean.xml

4)@Bean: 用于把当前方法的返回值作为bean对象存入spring的IOC容器中:
	属性: 
		name: bean的id, 当不写时,默认值是当前方法名称

5)@Import(xxx.class): 用于导入其它的配置类;

class<?>... xxx: 可变参数

6)@PropertySource

7)Spring整合JUnit的配置:
	不能更改别人的class字节码

8)@Runwith: 整合JUnit的, 替换Main函数的

9)事务的引入:
	(1)中间出现了异常,发现加和减对不上
		分析: 4次操作,有4个connection,每一个connection都会有一个事务.
		解决方案: 只用一个connecttion--》ThreadLocal对象的引入:
					使用ThreadLocalUI想baConnection和当前线程绑定,从而一个线程中只有一个能控制事务的对象

	(2)之前没有问题的原因: 每次操作都会创建一个对象,每次数据库操作,都会从连接池中拿出一个连接

	AOP优势的引入:

10)ThreadLocal:
		连接的工具类,它用于从数据源中获取一个连接,并且实现和线程的绑定;
		获取当前线程上的连接;

11)连接池
	(1)web app在tomcat启动时,创建出来连接, 在外部使用时,保证执行效率;

12)已经close的连接时归还到连接池了,要和Threadlocal解绑

13)让Service有事务的控制

14)保证方法间的独立,不让有方法间的这种耦合关系;

15)动态代理解决的问题:
	(1)生产厂家

	(2)--》经销商/代理商(销售、售后)

	(3)6999的电脑买到后, 经销商还是6999吗? 很可能是低很多,可能是4999, 另外2000可能是库房、培训等..

	(4)我们不能和生产厂家联系了, 生产厂家只是生产电脑


	代理实现了功能增强

16)认识接口
	(1)java中接口就是标准,你必须实现

17)动态代理:
	特点: 字节码随用随创建,随用随加载;
	作用:在不修改源码的基础上对方法增强;
	分类: 基于接口的动态代理
			涉及的类: Proxy
			提供者: 官方

			如何创建代理对象:
				使用Proxy类中的newProxyInstance方法:
					参数:
						ClassLoader: 类加载器(固定写法)
							用于加载代理对象字节码的,写的是: 和被代理对象使用相同的类加载器;

						Class[]: 字节码数组(固定写法)
							它是用于让代理对象和被代理对象有相同的方法。


						InvocationHandler: 用于提供增强的代码
							它是让我们写如何代理,我们一般都是写一个该接口的实现类,通常情况下都是匿名内部类(非必须)

							作用: 执行被代理兑现改的任何接口都会经过该方法.

							proxy: 代理对象的引用
							method: 当前执行的方法
							args: 当前执行方法所需的参数
							return: 和被代理对象有相同的返回值

								// 提供增强的代码
								1.获取参数 args[0]

								2.判断当前方法是不是销售 method.getName()


								return method.invoke(producer, args)



			要求: 被代理类至少实现一个接口,没有则不能使用. 因此问题也是: 不识闲任何接口,则不可以用.	


		  基于子类的动态代理(cglib)
		  	涉及的类: Enchancer
		  	提供者: 第三方cglib

		  	如何创建对象:
		  		使用Enhancer的create方法:
		  			Class

		  			Callback
		  				MethodInterceptor:
		  					intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)


		  	Enchaner.create(producer.getClass())

18)使用:
	加回到池子里
	乱码方法的增强

19)1个实现类,一个实现动态代理的
  @Autowired
    @Qualifier("proxyAccountService")
    private  IAccountService as;

11)配置中变得繁琐了,那么如何简化配置呢? AOP来啦!!!
	

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章