spring笔记本.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
spring笔记本

最好不要直接操作DateSource, 而是操作由spring提供的JdbcTemplate 这个类来操作。 这边需要一个实现RowMapper接口的类, 所以在其他文件需要顶一个实现了该接口 的类。 1、Rs参数是由JdbcTemplate 回调配置的。 2、为什么rs没有next一下?因为 当这个方法被调用的时候,在 外部rs已经被next了,所以不需要 我们自己进行处理。 测试程序! 最后千万不要忘记加上@Transactional 它告知PersonServiceBean需要由Spring 的事务来管理的。 外置property文件,通过 Spring提供的占位符来导入数据 视频23 Unchecked(RuntimeException):spring事务会对数据进行回滚 Checked(Exception):这种异常,事务是不会对数据 进行回滚的。 加上了圈里面的限定,即使出现了Exception这种异常, 仍然执行回滚操作。 视频24 运用该标签之后,由默认 的按类型选择,编程了按 名称进行选择。 添加上了require=true之后,如果 在bean里面找不到相应的bean, 那么就会报错。默认情况下,如果 找不到,会给变量赋值null. 扫描带有标签的类之后,放入到 Spring中进行管理。最好能够提前 分好类。 如果没有指定类的名称,那么getBean(“”)里面传入的参数就是标签下类的名称,将第一个字母小写。 标签内可以指定bean的id,方便 容器能够寻找到。 @Scope属性如果设定为prototype, 就是在被调用的时候才实例化。 初始化之后执行 实例被销毁的时候会调用 实现功能: 1、拦截所有业务方法 2、判断用户是否有权限,有权限就允 许他执行业务方法,没有权限不允许 他执行业务方法。(是否有权限是根 据user是否为null作为判断依据) 当客户端调用代理对象的业务方法的时候,那么代理对象会执行invoke方法,把这个方法的 调用委托给目标对象。 更改代理方法内容 自己建立AOP代理框架 测试程序 问题: 使用我们自己建的代理对象 ,需要目标对象本身实现 相应的接口。 但是如果目标对象没有使用 相应的接口,如何解决代理 对象问题? 使用CGLIB来实现。 测试代码(提供了权限) 测试代码(没有提供权限) 横切性关注点 我们需要拦截什么,拦截之后又要做什么,这些 思考的方式。 视频17 测试代码 运行结果是先执行doAccessCheck方法,再执行save方法 跟前面的PPt相对应的各个通知的位置。 例外通知是需要程序抛异常的,而如果 程序抛异常,则意味着后置通知不会执行 其他的通知都是会执行的。 比较适合在环绕通知里面进行 一些前置判断,pjp.proceed()方法 如果没有被调用,则不会执行往下的 方法。(特别注意) 用来表示不仅需要满足 第一行代码中execution里 的内容,还需要业务bean 方法里面的参数只有一个, 且是String类型。进一步对 切面方法的执行进行了限制。 测试代码 这样写法用于获取到执行方法 的返回结果,returning的值与 doAfterReturning方法的参数 一致。 获取抛出异常的信息 视频19 这个execution表达式表明: 只有返回值为String的方法 才会被拦截到。如果拦截不是 String返回值的类型,则重写为 !java.lang.String 视频20 * 在@Resource里面指定name属性,name就是id里面的名字。 @Resource不能用在get方法上面。 * * * Spring配置文件的写法 模拟spring完成读取配置文件的操作 1、Bean是单实例模式,但是可以通过bean的作用域来获取两个不一样的bean,设置scope=“prototype”,这个PPT都是scope属性的值。 2、如果没有lazy-init=“true”,则bean默认在容器实例化的时候进行实例化。 3、还可以在beans.xml配置文件中,为每个bean配置延迟初始化,在beans标签里面的属性,不推荐。 4、在beans中配置init-method=“init”,则会在bean实例化的时候,在bean对象里面找有没有init方法,如果有则调用该方法。 5、!-- bean在初始化之后调用init()方法,销毁之后调用destory方法 -- bean id=personServiceBean3 class=cn.ntu.dc.day6.PersonServiceBean2 init-method=init destroy-method=destory/bean 对应视频7 把Dao注入到Service内,因为是面向编程。在se

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档