spring4.x系列学习笔记(四)

一:类装载器

加载class文件到JVM-》验证正确性(分配内存空间)-》初始化(静态变量初始化静态代码初始化)。

jvm启动时会加载3个装载器:根装载器(c++编写看不到加载jre核心库),extclassloader(加载jre扩展目录下的jar),appclassloader(应用程序类的加载,我们使用的),从上到下是父子关系。


资源操作接口resource方法:

exists():资源释是否存在

isopen():是否打开

getURL() 如果资源可以用URL表示,则防范对应URL

getFile()如果资源对应一个文件,返回该对应的File对象

getInputStream() 返回资源输入流


实现该接口的常用类有:ByteArrayResource,InputStreamResource,ClassPathResource,ServletContextResource,UrlResource,PathResource,FileSystemResource。其中PathResource,FileSystemResource可以写数据到文件中。对于远程如http,ftp资源可以使用URLResource

注意:当资源是一个文件的时候使用打包的方式把文件打包到jar中然后在通过getfile方式返回file对象会报错,使用getInputStream则可以成功。


资源加载器ResourceLoader,它依赖Resource接口,对采集到的数据进行加载。它简化了对资源的获取时显示的调用Resource的实现类,ResourceLoader可以根据传入的资源标识确定去调用具体的那个Resource的实现类。目前ResourceLoader有2个子实现类:ResourcePatternResolver和PathMatchingResourcePatternResolver。这2个类支持传入的资源地址参数正则表达式方式,可以返回一个资源Resourced的集合。


beanFactory(IOC容器)面向spring本身,applicationContext(应用上下文或者spring容器)面向开发者,后者继承于前者。

applicationContext:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext,还有后续的web方面的ApplicationContext。基于注解的applicationContext是AnnotationConfigpplicationContext,基于Groovy方式的applicationContext是GenericGroovyApplicationContext。

在web应用中,web应用上下文(webApplicationContext)作为一个属性放在ServletContext中,可以使用工具类webApplicationContextUtils方法获取:

getwebApplicationContext(ServletContext sc)。

WebApplicationContext applicationContext=servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)

同时WebApplicationContext 也可以通过getservletContext获取servletContext。


WebApplicationContext 启动与beanFactory、applicationContext启动方式不一样,它需要servletContext实例依赖。也就是他的启动需要web容器。

要启动WebApplicationContext 可以借助web.xml中配置的servlet或者servletContextListener。spring提供了启动该容器的对应类

org.springframework.web.context.ContextLoaderListener和org.springframework.web.context.ContextLoaderServlet


spring对于容器可以设置子容器,子容器可以访问父容器的bean,反过来就不行。成功案例:spring创建springmvc子容器,在业务层和数据层创建一个父容器,这样前端可以访问后端的父容器,而后端不能访问前端容器的bean。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值