Spring中的IOC思想和DI技术应用面非常广,不是Spring框架开发出来的,在其他的领域,如.net之类也是有一些IOC框架的。
如果把scope属性改为prototype多例的,spring容器在创建完对象之后就交给你管理了,所以在ac.close();关闭容器之后不会触发你配置的destroy-method="userDestroy"方法。
如何加载引入的jar包的本地源代码:
方法1:点击上图的Choose Sources...这样是选择本地的源代码文件,如:
方法2:Download...这个是从网上下载。
AOP思想:
面向切面编程:将纵向重复代码,横向抽取决解,简称:横切。
它可以横跨不同的类,抽取其中功能相似的代码,统一处理,从而达到解耦的目的。
SpringAOP思路总结:
在使用SpringAop的时候,首先需要配置一个目标对象以及通知对象。容器在初始化的时候,会把这两个对象放入容器中,然后容器会读取<aop:config>并解析。解析完到切点表达式的时候,它会把切点表达式给解析出来,解析出来之后它会把切点表达式里面的类跟容器中的类进行匹配,如果匹配成功它将创建代理对象,否则,不会创建代理对象。也就是说,你的切点表达式如果配置错了,或者你的切面已经通知配置错了,它是将无法创建出代理对象的。
之后,在客户端获取bean的时候,如果通知类,切点表达式以及切面都配置正确的话,那么它则返回代理对象,否则它会返回对象本身。使用代理的方式,是根据你的目标类有没有实现接口,如果有它会采用JDKProxy动态代理;如果没有实现接口,会采用Cglib动态代理,且Cglib方式要求:被代理的对象不能被final修饰,基于继承。
关于Jar的总结:
以ssm_spring_jdbc工程为例:
数据库连接池:
数据库驱动:
核心包:
需要test,test需要aop的支持:
jdbc+tx包(事务包):
(事务需要tx和jdbc包的支持)
要想使用aop还需要两个额外的包:
(一个是aop联盟,一个是织入包。)在aop事务中,用到aop那就需要用到这两个包。