2.spring IOC概述

1.IOC概念: 控制反转(Inversion of Control,英文缩写为IoC),某一接口具体实现类的选择权从调用类中移除,转交给第三方决定。
   DI(依赖注入:Dependency Injection):让调用类对某一接口实现类的依赖关系由第三方(容器或者协作类)注入,以移除调用类对某一接口实现类的依赖

2.IOC类型:从注入方法上看,主要分为三种类型:构造函数注入、属性注入、接口注入。
   注:由于通过接口注入需要额外申明一个接口,增加了类的数目,而且它的效果和属性注入并无本质区别,因此我们不提倡采用这种方式。

3.类装载器ClassLoader:类装载器就是寻找类的字节码文件并构造出类在JVM内部表示对象的组件。
   JVM在运行时会产生三个ClassLoader:根装载器、ExtClassLoader(拓展类装载器)和AppClassLoader(系统类装载器)。
   其中,Bootstrap类装载器负责加载java核心包的类(即 rt.jar 文件中的类)(这个根装载器是由本地代码实现,不可访问);
   ExtClassLoader类装载器负责加载/jre/lib/ext目录下的jar包中的类,AppClassLoader负责加载应用程序的启动的执行类(即应用中的自己的类都是它加载);
   这三个类装载器存在父子层级关系,从父到子依次是 根装载器、 ExtClassLoader、 AppClassLoader。
         
4.java反射机制: JAVA反射机制是在 运行状态 中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 Class反射对象最主要的三个反射类:Constructor、Method、Field类。

5.资源访问接口:Resource 
  
  1>主要的方法
boolean exists()//资源是否存在
boolean isOpen()//资源是否打开
URL getURL()throws IOException//如果底层资源可以表示成URL,该方法返回对应的URL对象。
File getFile() throws IOExcetion//如果底层资源对应一个文件,该方法返回对应的File对象。
InputStream getInputStream() throws IOExcetion//返回资源对应的输入流
   2>Resource具体的实现类:
ByteArrayResource:二进制数组表示的资源,二进制数组资源可以在内存中通过程序构造。
ClassPathResource:类路径下的资源,资源以相对于类路径的方式表示。
FileSystemResource:文件系统资源,资源以文件系统路径的方式表示。
InputStreamResource:对应一个InputStream的资源。
ServletContextResource:为访问Web容器上下文中资源而设计的类,负责以对于Web应用根目录的路径加载资源,它支持以流的方式和URL的方式访问。也可直接从jar包中访问资源
UrlResource:封装了Java.NET.URL,它使用户能够访问任何可以通过URL表示的资源,如文件系统的资源、HTTP资源、FTP资源等。
 3>其他:
          从上面类图我们可以看出FileSystemResource,实现了WritableResource,因此仅有这个类属于可读可写,而其它的均属于只读的Resource。
          资源地址表达式:spring提供强大加载资源的机制,不但能通过“classpath"、"file"等资源地址前缀识别不同的资源类型,还支持Ant风格带通配符的资源地址。
          资源加载器:主要的资源加载接口(从父到子):Resource、ResourceLoader、ResourcePatternResolver,主要实现类:PathMatchingResourcePatternResolver。

6.BeanFactory和ApplicationContext:简单来说,BeanFactory是Spring框架的基础设施,面向Spring本身;ApplocationContext面向使用Spring框架的开发者,几乎所有应用场合我们都直接使用ApplicationContext而非底层的BeanFactory。
  BeanFactory主要实现类为XmlBeanFactory,要创建XmlBeanFactory,需要传递一个Resource实例个构造函数。此Resource对象提供XML文件给工厂。
  ApplicationContext主要实现类为ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件。
   eg.书60页、64页
  注:Bean工厂延迟载入所有的Bean,直到getbean()方法被调用是Bean才被创建。应用上下文则会在上下文启动后预载入所有的单实例Bean。通过预载入单实例bean ,确保当你需要的时候,你就不用等待,因为它们已经创建好了。

6.5  WebApplicationContext初始化
   在web.xml中配置自启动的Servlet( ContextLoaderServlet )或者定义Web容器监听器(ContextLoaderListener)

7.spring的web应用上下文( ServletContext)和web容器的上下文( WebApplicationContext)互访:
    ServletContext访问 WebApplicationContext:  ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );
    WebApplicationContext访问 ServletContext:  ctx.getServletContext()

8.Bean的生命周期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值