spring的学习笔记

所需积分/C币:10 2012-10-12 07:16:38 1.62MB PDF
收藏 收藏
举报

spring很好的学习笔记,我想对于想学好或者面试好ioc和aop的同学有帮助的
http://jinnianshilongnian.iteye.com 120【第六章】AOP之6.3基于 Schema的AOP——跟我学 spring3..…,…,…185 121源代码下载—跟我学 spring3 .............207 1.22【第六章】AOP之64基于@ Aspec的AOP—跟我学 spring3 ........208 123【第六章】AOP之66通知参数——跟我学 spring3 219 1.24【第六章】AOP之6.5 Aspect!切入点语法详解——跟我学 spring3 230 125【第六章】AOP之6.6通知参数—跟我学 spring3 244 126【第六章】AOP之67通知顺序—跟我学 spring3 249 127【第六章】AOP之6.8切面实例化模型—跟我学 spring3 251 1.28【第六章】AOP之6.9代理机制—跟我学 spring3 253 1.29【第七章】对DBC的支持之71概述一—一跟我学 spring3, 省, 255 1.30【第七章】对JDBC的支持之72JDBC模板类——跟我学 spring3 258 1.31 SpringMvc+ spring31.1+ hibernate41.0集成及常见问题总结 281 1.32【第七章】对DBC的支持之7.3关系数据库操作对象化——跟我学 spring3 ······· 292 1.33【第七章】对DBc的支持之74 Spring提供的其它帮助——跟我学 spring3【私塾在线原 创】 303 1.34【第七章】对DBC的支持之7.5集成 Spring JDBC.及最佳实践—跟我学 spring3 312 1.35【第八章】对ORM的支持之8.1棚述一—跟我学 spring3 318 1.36【第八章】对ORM的支持之8.2集成 Hibernate3——跟我学 spring3 320 第3/334页 TYE http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之23IoC的配置使用—跟我学 Spring3 11【第二章】IoC之23IoC的配置使用—跟我学 Spring3 发表时间:2012-02-20关键字: spring 23.1XML配置的结构 一般配置文件结构如下: java代码 查看复制到剪贴板打印 beans> 2 <import resource="resource l. xml"/> <bean id ="bean 1"class =""></bean> 4. < bean id="bean" class ></bean> 5.< bean name="bean2” class=”"></bean> 6 <alias alias= bean 3 name="bean 2/> 7 <import resource="resource 2. xml"/> 8.</beans> 1、<bean>标签主要用来进行Bean定义 2、 alias用于定义Bean别名的 3、 Import用于导入其他配置文件的Bean定义,这是为了加载多个配置文件,当然也可以把这些配置文件构造为一个数 组( new Stringl{‘ config1xm", config2.xm)传给 Applicationg。 ntext实现进行加载多个配置文件,那一个更 适合由用户决定;这两种方式都是通过调用 Bean Definition reader读取Bean定义,内部实现没有任何区别。 < <Import>标签可以放在<bean>下的任何位置没有顺序关系。 232Bean的配置 Spring loc容器目的就是管理Bean,这些Bean将根据配置文件中的Bean定义进行创建,而Bean定义在容器内部由 Bean definition对象表示,该定义主要包含以下信息: ●全限定类名(FQN):用于定义Bean的实现类 ●Bean行为定义:这些定义了Bean在容器中的行为;包括作用域(单例、原型创建)、是否惰性初始化及生命周期等 ●Bean创建方式定义:说明是通过构造器还是工厂方法创建Bean; ●Bean之间关系定义:即对其他bean的引用,也就是依赖关系定义,这些引用bean也可以称之为同事bean或依赖 bean,也就是依赖注入 Bean定义只有“全限定类名”在当使用构造器或静态工厂方法进行实例化bean时是必须的,其他都是可选的定义。难 道 Spring只能通过配置方式来创建Bean吗?回答当然不是,某些 Singleton Bean Registry接口实现类实现七允许将那些 第4/334页 ITEYG http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之2.3IoC的配置使用——跟我学 Spring3 非 BeanFactory创建的、已有的用户对象注册到容器中,这些对象必须是共享的,比如使用 DefaultListable Bean Factory的 IregisterSingletor0方法。不过建议采用元数据定义。 233Bean的命名 每个Bean以有一个或多个id(或称之为标识符或名字),在这里我们把第一个id称为“标识符”,其余id叫做 “别名”;这些id在oC容器中必须唯一。如何为Bean指定id呢,有以下几种方式; 不指定id,只配置必须的全限定类名,由loC容器为其生成一个标识,客户端必须通过接口“T getBean( Class<T> required Type)"获取Bean java代码: 查看复制到剪贴板打印 1. <bean class="cn. javass spring chapter2 helloworld. HelloImpl"/> (1) 测试代码片段如下 java代码: 查看复制到剪贴板打印 1.@Test 2. public void test10( 3. Bean Factory bean Factory 4. new ClassPath XmlApplication Context("chapter2/namingbean.xml) 5 /根据类型获取bean HelloApi helloApi= bean Factory getBean(HelloApi. class): 7 helloApi. sayHelloO 8.} 二、指定id,必须在loc容器中唯一; ava代码: 第5/334页 TYE http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之2.3IoC的配置使用——跟我学 Spring3 查看复制到剪贴板打印 1. <bean id="bean"class="cn, javass spring chapter 2. helloworld. HelloImpl"/>(2) 测试代码片段如下 ava代码: 查看复制到剪贴板打印 1.@Test 2. public void test20( 3. Bean Factory bean Factory 4. new ClassPathXmlApplication Context("chapter2/namingbean2 xml"); 5./根据d获取bean 678 HelloApi bean bean Factory. getBean ("bean", HelloApi class) bean sayhello( 指定name,这样name就是“标识符,必须在Ioc容器中唯一 java代码 查看复制到剪贴板打印 <bean name="bean"class="cn javass spring chapter 2. helloworld. HelloImpl"/>(3 测试代码片段如下 java代码 查看复制到剪贴板打印 Test 2. public void test30( 3 Bean Factory bean factory 4. new Class PathXmlApplicationContext("chapter 2 /namingbean3 xml"); 5 根据name获取bean 6. HelloApi bean bean Factory. get Bean("bean", Hello Api class); 7. bean sayhello( 8.} 第6/334页 TYE http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之2.3IoC的配置使用——跟我学 Spring3 四、指定id和name,id就是标识符,而name就是别名,必须在loc容器中唯—; ava代码: 查看复制到剪贴板打印 1. <bean id="beanl "name="aliasl 2. class="cn. javass spring chapter2 helloworld. HelloImpl"/> 3.<!-如果d和name一样,IoC容器能检测到,并消除冲突-> 4. <bean id="bean"name="bean"class="cn. javass springchapter 2. helloworld. HelloImpl/> 测试代码片段如下: java代码 查看复制到剪贴板打印 1.@Test 2. public void test40( Bean Factory bean Factory 4. new ClassPathXmlApplication Context("chapter2/namingbean4xml"); 5 ∥/根据id获取bean 6 HelloApi beanl=bean Factory getBean("beanl", HelloApi class) 7 bean 1.say helloo ∥/根据别名获取bean HelloApi bean bean Factory. get Bean(alias l", HelloApi class bean 2 say helloo 11 据id获取bean 12 HelloApi bean3= bean Factory getBean("bean", HelloApi class) 13 bean. say helloo 14 Stringl bean aLias bean Factory. getaliases ( "bean3") 15 /因此别名不和id样,如果一样则由IoC容器负责消除冲突 Assert assertEquals(O, bean Alias length) 五、指定多个ηame,多个name用","、“;”、"″分割,第一个被用作标识符,其他的( alias1、 alias2 alias3)是别名,所有标识符也必须在Ioc容器中唯一 ava代码: 第7/334页 TYE http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之2.3IoC的配置使用——跟我学 Spring3 查看复制到剪贴板打印 1. <bean name="beanl; alias11,alias 12; alias13 alias14 2 class=cn. javass spring chapter2 helloworld. Hellolmpl"/> 3.<!-当指定时,name指定的标识符全部为别名> 4. <bean id="bean 2"name="alias 21; alias 22 5. class="cn. javassspring chapter 2. helloworld. Hellolmpl"/> (5) 测试代码片段如下 ava代码: 查着复制到剪贴板打印 @Test 2 public void test50( 3. Bean Factory beanFactory 4. new ClassPathXmlApplication Context("chapter2/namingbean5xml"); /1根据id获取bean HelloApi beanl= bean Factory getBean ("beanl", HelloApi class) 7 beanl say helloo 8 /2根据别名获取bean 9 HelloApi aliasll bean Factory getBean("aliasl1, HelloApi class) 10 alias 11.sayhelloo 11 /3验证确实是四个别名 Stringl bean lalas bean Factory getAliases ("bean 1") 3456 System. out. printIn("=======namingbean5xml bean1 2========") for(String alias: bean lAlas)( System.out println(alias) Assert assertEquals(4, bean IAlias length); 18 /根据id获取bean 19 HelloApi bean =bean Factory getBean ("bean2 HelloApi. class); 20 bean 2. sayhelloo 2根据别名获取bean HelloApi alias21 bean Factory getBean(alias21", HelloApi class); 23 alias 21. say hello o: 24 /验证确实是两个别名 25 Stringll bean aLias bean Factory. getAliases("bean") 26 System. out. println(=======namingbean5xml bean 2 34========") for(String alias bean2Alias)[ out println(alias) 29 30 Assert assert Equals(2, bean2Alias. length) 31.} 六、使用<lias>标签指定别名,别名也必须在IoC容器中唯一 java代码: 第8/334页 TYE http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之2.3IoC的配置使用——跟我学 Spring3 查看复制到剪贴板打印 123 <bean name="bean"class="cn. javass spring chapter 2. helloworld. HelloImpl"/> <aliasalias ="alias l"name="bean"/> <alias alias="alias name="bean"/> (6) 测试代码片段如下 java代码 查看复制到剪贴板打印 1.@Test 2. public void test60( 3. Bean Factory bean Factory 4. new Class PathXmlApplicationContext("chapter 2/namingbean6 xml " 根据id获取bean 5678901 HelloApi bean bean Factory getBean("bean", HelloApi class) bean. sayHelloo ∥/根据别名获取bean HelloApi aliasl bean Factory getBean ("alias1", HelloApi class) ias1. sayHelloo HelloApi alias2 bean Factory getBean(alias 2, HelloApi class), 12 alias 2. sayhelloo 13 Stringll beanalias bean Factory getAliases bean " System. out. println("=======namingbean6 xml bean 34========") 456789 for string alias: bean Alias)( System. out. printIn(alias); System. out. print ("=======namingbean 6 xml bean 6========") Assert assert Equals(2, beanAlias. length) 以上测试代码在 Cn Kavass. spring. chapter2 Naming BeanTest java文件中。 从定义来看,name或d如果指定它们中的一个时都作为“标识符”,那为什么还要有id和name同时存在呢?这是因为 当使用基于XML的配置元数据时,在XML中id是一个真正的 XML id属性,因此当其他的定义来引用这个id时就体现出id 的好处了,可以利用XML解析器来验证引用的这个id是否存在,从而更早的发现是否引用了一个不存在的bean,而使 用name,则可能要在真正使用bean时才能发现引用一个不存在的bean。 ●Bean命名约定:Bean的命名遵循XML命名规范,但最好符合Java命名规范,由“字母、数字、下划线组成“,而且 应该养成一个良好的命名习惯,比如采用“驼峰式″,即第一个单词首字母开始,从第二个单词开始首字母大写开始 这样可以增加可读性。 第9/334页 TYE http://jinnianshilongnian.iteye.com 1.1【第二章】IoC之2.3IoC的配置使用——跟我学 Spring3 23.4实例化Bean Spring loc容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean。而 Spring loc容器则需 要根据Bean定义里的配置元数据使用反射机制来创建Bean。在 Spring Ioc容器中根据Bean定义创建Bean主要有以下 几种方式 使用构造器实例化Bean:这是最简单的方式, Spring loc容器即能使用默认空构造器也能使用有参数构造器两种方 式创建Bean,如以下方式指定要创建的Bean类型 使用空构造器进行定义,使用此种方式, class属性指定的类必须有空构造器 ava代码 查看复制到剪贴板打印 1. <bean name="bean1"class="cn javass spring chapter2. Hellolmpl2"/> 使用有参数构造器进行定义,使用此中方式,可以使用< constructor-arg>标签指定构造器参数值,其中 aindex表示位 置, value表示常量值,也可以指定引用,指定引用使用ref来引用另一个Bean定义,后边会详细介绍 java代码: 查看复制到剪贴板打印 <bean name="bean"class="cn javass spring chapter2. Hellolmpl2"> 2.<!-指定构造器参数-> 3 <constructor-arg index="0"value="Hello Spring !"/> 4. </bean> 知道如何配置了,让我们做个例子的例子来实践一下吧 (1)准备 Bean class(HelloImpl2java),该类有一个空构造器和一个有参构造器 java代码 查看复制到剪贴板打印 1. package cn. javass spring chapter 2 2 public class HelloImpl2 implements HelloApi f 第10/334页 ITEYG

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
最新推荐