- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring2.5视频教程
依赖注入,用的是接口,不需要具体对象,可以注入这个接口的所有类
参考spring的帮助文档来编写配置文件
新建配置文件
新建一个单元测试
使用new junit 4 test ,点击下面的click here 来导入单元测试的类库
新建一个java类
一般情况下我们尽量实现接口编程
对已有类进行接口提取。
接口和实现类最好不要放到一块,可以选移动,来转到别的地方去
在beans中的
为什么有了id还要name,id不能包含特殊字符(因为id为xml文件默认解析字段),如果有特殊字符,就用name。
bean的名字首字母小写
创建好bean之后,spring容器会帮我们创建和维护,我们要用这个bean时,只需要从spring里获取即可
怎么获取,获取之后就可以调用其方法了
spring内部怎么创建bean的
引用jar文件
建一个用户库
判断spring默认创建的bean对象是否是同一个,结果为true,及为同一个
bean是单实例,如何让每调用一次bean就创建一个实例对象呢
只要设置scope=prototype即可实现每调用一下bean就会创建一个实例
实例化spring容器
在访问bean时才实例化,延迟实例化
如果需要xml文件中的所有bean都延迟实例化,可以在beans中加上下面的内容
在实例化bean的时候,初始化一个方法init,(先实例化,在初始化方法)
但bean被销毁的时候,调用方法,(只有在spring容器被关闭, bean才会被销毁)
调用spring里面的close()方法来正常关闭spring容器
对象注入,
依赖注入,通过属性的set方式
内部bean实现对象注入
等于下面这种方式“注入其他bean”,这种方式bean可以被多个bean调用
如何注入基本类型。
set集合注入值
list集合注入值
properties注入值
map注入值
用构造器注入
用注解注入对象,会去xml文件中寻找于名字为personDao的bean,如果没有找到这个名字的bean,就会去根据personDao的类型PersonDao去寻找对应的bean
用注解指定注入哪个bean
用属性的set方法
创建注解
如果按类型的注解注入发现了多个匹配类型是,程序就会报异常
在beans.xml中配置自动扫描组件,让标上了注解的类让spring容器来管理
数据访问层交给spring自动扫描来管理
服务层组件交个自动扫描来管理
自动扫描得到的bean的名称是简单类名,首字母小写
直接指定自动扫描的bean名称
上面的是单例模式,加上@scope的模式就可以实现多例模式了
如果下面语句返回false就是多例,如果为true就是单例
这个注解指定初始化方法
指定bean在销毁前执行的方法
目标类必须是面向接口编程是才能使用proxy代理类对象动态生成代理
横切性关注点
代理对象创建:静态代理,动态代理(jdk或第三方框架动态生成代理对象的字节码即可)
创建一个代理工厂
Handler看到及为一个回调,在这里是接口,及拦截到方法之后,触发哪个类的拦截方法,这个拦截方法名是:invoke
第三方的创建代理对象的jar,cglib ,不要求目标类实现接口
创建一个cglib类,来创建代理对象的方法
指定代理类的父类为目标类
指定代理类的回调为自己本身
使用spring怎么实现AOP框架
指明可以使用aop功能
指明这个类是一个切面,用来定义我们要拦截的方法
execution(* cn.itcast.service..*.*(..))
第一个星号表示任何返回值类型
包后面的两个点表示包下面的所有子包
两个点后面的星号表示类名,
再后面的星号表示方法名
在后面括号中的两个点表示任意参数(有无,多个或一个
定义个注解切面,对PersonServiceBean类中的所有方法进行拦截
)
交给spring管理(扫描,在xml中配置)
把业务bean也交给spring管理
测试注解实现的切面(这里面的@test是单元测试的注解)
后置通知
最终通知
例外通知
扔出一个异常
环绕通知,在做权限的时候经常用到,定义有点不一样,方法名可以改,参数可以改,但必须执行proceed()方法。
得到用户的输入参数,(筛选出)目标类的方法只有一个参数,且参数名叫name,参数类型为String
得到返回结果(筛选出)目标类的方法只有一个返回参数,参数类型为String
得到例外中的意外信息
基于xml配置方式声明切面
返回值只为string的切入点:
第一个参数字符串,第二个可有可无
有返回值,不是void
数据源
aop
spring
注解
数据库驱动jar文件
所有必须的
文档评论(0)