06_springIOC和DI实验步骤___用xml方式_第1页
06_springIOC和DI实验步骤___用xml方式_第2页
06_springIOC和DI实验步骤___用xml方式_第3页
06_springIOC和DI实验步骤___用xml方式_第4页
06_springIOC和DI实验步骤___用xml方式_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpringDI和IOC本文可用实验代码官网核心网址见https:/docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html。用一个简单项目来实验IOC功能l 创建web项目(也可以是普通java项目)1、核心的四个spring的jar包的引入(必需)2、commons-logging.jar (必需)3、也可以 引入log4j.jar,和它配置文件perties,这样更全面。Log4j组件要特别注意版本,如果只添加了jar文件,而没有添perties文件,那么运行时肯定要报错。或者要么就完全不导入log4j组件,这样日志输出就会利用commons-logging默认的那种输出方式(这种方式反而在控制台能够打印出更多的信息)。有时使用log4j组件的时候,如果配置文件写得不足,反而很多信息没输出出来。另外log4j的高版本已经使用log4j2.xml做配置文件而不是properties文件了,放在src目录下即可。l IOC容器的配置文件的编写,即xml文件的编写,根节点,里面是多个,官网上有最小配置的写法。在spring.io进到文档输“”搜索即可。l 创建容器BeanFactory语法:new 容器类 (xml文件路径)利用xml来初始化容器有多种办法。(1)ClassPathXmlApplicationContext :xml文件放在class路径中。上下文实例化方式。【强烈推荐】(2)FileSystemXmlApplicationContext :xml文件放在WEB-INF中,用时可写成磁盘路径。(3)使用系统路径的方式。 涉及FileSystemResource类(4)使用ClassPath查找的方式。涉及ClassPathResource类new以上的类其中之一都可创建出容器。比如:new ClassPathXmlApplicationContext(classpath:applicationContext.xml)继承关系的特殊说明:BeanFactory接口在最上层,ApplicationContext是它的子接口,然后ApplicationContext又派生出AbstractApplicationContext。以上(1)(2)(3)(4)四个类,猜想因该都是AbstractApplicationContext的子类吧。l 从容器中 查找/取bean对象语法:容器.getBean(selector); selector一般可以是 (1)字符串:按id或name,(2)Class 按类型(即写法是类型名.class)l bean对象创建的一些细节1、用name还是id因name可以用的写法更多就更宽松,所以标签多用name属性。也可详见/RunForLove/p/5528004.html。2、对象会创建多少个? 即scope属性可以是 singleton单例。它也是默认情况。prototype多例。原型。request 一个request范围内,是单例。不常用。session一个request范围内,是单例。不常用。3、对象什么时候创建 多例是对象要用的时候才创建Bean。即第一次调getBean()时,才创建对象。单例是容器启动后立即创建Bean 。即如当new ClassPathXmlApplicationContext()时就要创建。延迟创建单例情形下,也可以设置成“延迟创建”模式。用lazy-init=true。多例情形下,本身就是延迟创建的。4、bean对象的初始化和销毁可以专门给bean设置初始化和销毁的方法,用init-mothod属性和destroy-mothod属性来设置。由于一般观察不到destroy- mothod方法被调用,则可主动调容器的destroy()或close()方法就行。但是AbstractApplicationContext以及它的继承者才含有destroy()方法或close()方法。Bean对象创建的方式之调用工厂创建。假设有一个工厂类是如下形式:public class SomeFactorypublic static XXX 方法名1() return new XXX();public XXX 方法名2() return new XXX();则可以演示两种使用工厂模式来创建bean对象1、静态工厂(常用于集成第三方的其它一些工具,因这些工具就是提供函数来获得对象的)2、实例工厂(常用于集成第三方的其它一些工具,因这些工具就是提供函数来获得对象的)需要两句 依赖注入DI有各种注入方式。1、Set方法注入 :利用标签注入属性,通过name属性指定属性名,使用value属性或ref属性value属性注入 值类型 ,即一般数据类型或字符串ref属性注入 引用类型,即使用另外的一个对象写法示例如下.2、构造方法注入(有参或无参)利用标签注入属性。很多地方和set注入一样。但有其他很多不同的地方。为解决重载时的参数位置顺序影响选择哪个构造方法,给设index属性,从0开始。public class Confusion public int c;public Confusion(String name , Car car)System.out.println(呵呵); /构造方法一public Confusion(Car car , String name)System.out.println(嘿嘿); /构造方法二/xml文件这里的设置选择了“构造方法一”为解决重载时类型可能冲突(String 和其它类型冲突)的问题,则使用type指定参数类型(使用全限定类型名)示例:冲突的解决public class Confusion public int c;public Confusion(String someValue)System.out.println(Confusion(String)called); public Confusion(int someValue)System.out.println(Confusion(int)called); public Confusion(integer someValue)System.out.println(Confusion(int)called); /xml文件 90 或90黄色的地方就保证了这个90传入构造方法时是按Integer,int去看待的。3、 P名称空间注入(spring4推出)参见:/p/1fdaa014fc09spring的p名称空间和SpEL属性注入第一步:导入名称空间。xmlns:p=/schema/p 第二步:书写配置,使用p:属性 进行注入 。形式有(1) p:属性名=值,这用于值类型。(2) p:属性名-ref=引用对象的名字 ,这用于引用类型。例如:另外,这种典型案例是配置数据源。4、表达式注入即spel注入使用#号,而不是$。可以用于把另外的一个bean对象的属性值拿来用,相当方便。注入复杂数据复杂数据有这几种类型标签Object数组 List类型: spring在实现的时候实际上会用ArrayListSet类型:spring在实现的时候实际上会用LinkedHashSetMap类型:spring在实现的时候实际上会用LinkedHashMapProperties类型 可用如下方式实验Personname;age;car;Object objs;List list;S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论