包含如下模块:cache(略)、context、jmx、remoting(略)、scheduling、scripting(略)等等。
JMX模块
查看org.springframework.jmx.export.annotation包下的注解,会使用即可。不作具体分析。
context模块
applicationContext接口:
applicationContext实现的接口:通过EnvironmentCapable访问系统环境参数、通过ListableBeanFactory和HierarchicalBeanFactory作为bean容器、通过MessageSource提供资源国际化、通过ApplicationEventPublisher提供applicationContext事件机制、通过ResourcePatternResolver实现资源加载和解析。
applicationContext实现类 的层次图:
左边一列是非web环境下的applicationContext实现,最终提供了2种加载xml的实现方式:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext;
右边是web环境下的applicationContext实现,提供了注解配置和xml配置这两种实现:AnnotationConfigWebApplicationContext、XmlWebApplicationContext。
GenericApplicationContext:
GenericApplicationContext与其他上上图中其他的ApplicationContext实现所不同的是:
1.它并没有指定加载Bean的途径和方式(xml、注解等),而是在构造器中直接拿到beanFactory。之后可以通过XmlBeanDefinitionReader等等方式加载bean了。这样GenericApplicationContext就提供了load bean的灵活度。一般情况下还是建议使用ClassPathXmlApplicationContext or FileSystemXmlApplicationContext更为方便。
2.refresh()仅能在load bean定义之后调用一次。再次调用会抛异常。
AnnotationConfigApplicationContext提供了2个有用的构造器:public AnnotationConfigApplicationContext(Class<?>... annotatedClasses)直接指定带注解的bean class,从而加载该bean;public AnnotationConfigApplicationContext(String... basePackages)指定扫描的类路径,使用ClassPathBeanDefinitionScanner扫描该路径下 带注解的bean class。
GenericXmlApplicationContext通过手动指定一个或多个xml文件路径来加载bean,最后调用refresh()。功能上等同于ClassPathXmlApplicationContext and FileSystemXmlApplicationContext。
StaticApplicationContext提供手工编程注册bean和Message,而不是从外部配置资源中读取。它及其子类主要用于测试环境,一般不用于生产环境。
applicationContext的生命周期的实现机制:
任意bean都可以实现Lifecycle或SmartLifecycle接口和Phased接口(可选),以用来控制bean和beanFactory的生命周期。
bean factory start()的时候,对实现Lifecycle的所有bean,根据Phase进行分组(没有实现Phase接口则为0)然后按照从小到大的顺序来分组启动。
bean factory close()或stop()的时候,则按逆序分组并关闭这些bean。
对每个bean的启动/关闭,需要先递归启动该bean依赖的其他bean,最后再启动/关闭该bean。
ApplicationContext的事件触发机制:
AbstractApplicationEventMulticaster负责实现listener的管理。在 getApplicationListeners(ApplicationEvent event)中实现了对listener访问的线程安全性和并发保证;并支持对listener执行先后的排序(只需要listener实现Order接口即可)。
spring实现了4种事件:ContextClosedEvent、ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent。也可以自定义事件。
---------------org.springframework.context.annotation---------------
提供了几个注解:Configuration、ComponentScan、Bean、PropertySource、ImportResource、Import、Scope、Primary、Role、Profile、DependsOn、Lazy、EnableMBeanExport、EnableLoadTimeWeaving、EnableAspectJAutoProxy。用法参考注解各自的接口注释。
Configuration注解的class,是通过CGLIB增强,重写了@Bean方法,当容器需要构建这个bean的实例的时候,才会调用原先的方法。(参见ConfigurationClassEnhancer.BeanMethodInterceptor.java)
---------------org.springframework.context.config--------------
用于解析 与以上注解一一对应的xml配置,并做相应处理。
scheduling模块
---------------org.springframework.scheduling.annotation-------------
注解:EnableScheduling、EnableAsync、Scheduled、Async
@Configuration注解的class:AbstractAsyncConfiguration、ProxyAsyncConfiguration、SchedulingConfiguration
提供的BeanPostProcessor:
AsyncAnnotationBeanPostProcessor用于扫描Async注解的函数,以AOP注入的方式调用executor异步执行(AnnotationAsyncExecutionInterceptor);
ScheduledAnnotationBeanPostProcessor扫描Scheduled注解的函数,把它们作为任务注册到ScheduledTaskRegistrar中,设置scheduler,最后调用registrar.afterPropertiesSet()来schedule这些任务。
---------------org.springframework.scheduling.concurrent--------------
上图中,ExecutorConfigurationSupport封装了对Executor的所有配置项(即其中的属性),包括使用的线程工厂、线程名字、rejectedExecutionHandler、关闭机制、等待终止的时间等等。
ThreadPoolTaskScheduler和ThreadPoolTaskScheduler,调用ScheduledExecutorService来实现一次调度、固定频率调度、固定延迟调度,但是对于周期性cron调度则要调用ReschedulingRunnable和CronTrigger。PeriodicTrigger提供了固定频率调度、固定延迟调度的功能。
----------------------org.springframework.scheduling.config--------------------
对xml配置方式的解析,不作具体分析。
----------------------org.springframework.scheduling.support----------------------
CronTrigger,实现Trigger接口,结合CronSequenceGenerator计算任务的下次执行时间。
SimpleTriggerContext中保存了schedule trigger任务的上下文数据(见接口TriggerContext)。
----------------------org.springframework.stereotype----------------------
提供了几类组件注解:Component、Controller、Repository、Service
相关推荐
开发工具 spring-context-4.3.6.RELEASE开发工具 spring-context-4.3.6.RELEASE开发工具 spring-context-4.3.6.RELEASE开发工具 spring-context-4.3.6.RELEASE开发工具 spring-context-4.3.6.RELEASE开发工具 spring...
Spring最新所有Jar包、文档、源码,包括spring-aop-5.1.8.RELEASE、spring-aspects-5.1.8.RELEASE、spring-beans-5.1.8.RELEASE、spring-context-5.1.8.RELEASE、spring-context-indexer-5.1.8.RELEASE、spring-...
org.springframework.context-3.0.0.RELEASE org.springframework.core-3.0.0.RELEASE org.springframework.expression-3.0.0.RELEASE org.springframework.instrument.tomcat-3.0.0.RELEASE org.springframework....
通过阅读源码,开发者可以理解Spring是如何通过精心设计的接口和类,以及一系列的设计模式,实现了高可扩展性和易用性的。 总的来说,Spring框架5.2.8.RELEASE源码的学习是一次深入理解Java企业级开发、掌握模块化...
标题 "org.apache.servicemix.bundles.spring-jdbc-3.2.8.RELEASE_2.zip" 提供的信息表明,这个压缩包包含了 Apache ServiceMix 的一个捆绑包,具体是 Spring JDBC 模块的 3.2.8.RELEASE 版本的第二次更新。...
spring-context-3.1.0的源码包直接导入就OK,或者用jd-gui工具查看
spring-context-3.1.3.RELEASE-sources.jar spring-context-support-3.1.3.RELEASE-sources.jar spring-core-2.5.6-sources.jar spring-core-3.2.0.RELEASE-sources.jar spring-expression-3.1.3.RELEASE-sources....
研究Spring源码能帮助开发者提升对Java和软件设计的理解,学习最佳实践,提高代码质量和可维护性。同时,对于解决框架使用中的问题,或自定义扩展Spring功能,源码学习至关重要。 7. **未来发展趋势** 虽然Spring...
3. **spring-framework-4.3.13.RELEASE-schema.zip**: 此文件包含Spring的XML配置文件所使用的各种命名空间和模式定义。Spring框架允许开发者通过XML配置来装配bean,这些XML配置文件遵循特定的schema。此压缩包...
1. 阅读源码注释:Spring框架的源码注释详尽,是理解其工作原理的重要途径。 2. 分析核心类和接口:如`ApplicationContext`、`BeanFactory`、`AopProxy`等,理解它们的作用和相互关系。 3. 跟踪执行流程:通过断点...
spring-context-3.2.3.RELEASE-sources.jar;spring-context-support-3.2.3.RELEASE-sources.jar;spring-core-3.2.3.RELEASE-sources.jar;spring-data-commons-1.5.1.RELEASE-sources.jar;spring-data-jpa-1.3.2....
4.3.1/spring-context-4.3.1.RELEASE.jar 4.3.1/spring-core-4.3.1.RELEASE.jar 4.3.1/spring-expression-4.3.1.RELEASE.jar 4.3.1/spring-jdbc-4.3.1.RELEASE.jar 4.3.1/spring-messaging-4.3.1.RELEASE.jar 4.3.1/...
3. **spring-context**: 扩展了IoC容器,引入了上下文概念,提供了对国际化、事件、资源、缓存等支持。 4. **spring-aop**: 实现了面向切面编程(AOP),允许定义方法拦截器和切面,用于实现如日志、事务管理等功能。...
开发一个基本的spring Application所需要用到的最小包: ...spring-beans.jar,spring-core.jar,spring-web.jar,spring-context.jar,spring-webmvc.jar 使用基本数据访问,持久化工具等数据功能所用到得包:
`org.springframework.context.ApplicationContext`扩展了BeanFactory,提供了更多的企业级服务,如消息传递、事件发布等。在AOP部分,`org.springframework.aop.framework.ProxyFactoryBean`用于创建代理对象,实现...
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
赠送jar包:spring-context-5.3.7.jar; 赠送原API文档:spring-context-5.3.7-javadoc.jar; 赠送源代码:spring-context-5.3.7-sources.jar; 赠送Maven依赖信息文件:spring-context-5.3.7.pom; 包含翻译后的API...
2. **spring-context-3.2.0.RELEASE.jar**:扩展了Spring Core,提供了与企业服务的集成,如JMS、JMX、电子邮件等。此外,它还包含了事件发布、国际化、资源处理等功能,是Spring应用的主要入口点。 3. **spring-...
spring-4.2.4-RELEASE....spring-context-4.2.4-RELEASE.jar,免费下载 spring-core-4.2.4-RELEASE.jar,免费下载 spring-expression-4.2.4-RELEASE.jar,免费下载 spring-context-support-4.2.4-RELEASE.jar,免费下载
通过阅读官方文档,参与实战项目,以及对源码的分析,可以逐步提升对 Spring 的理解和运用能力。 总的来说,Spring 框架 3.1.0.RC2 是一个强大且成熟的开发工具,它的设计理念和实现方式对 Java 开发者有着深远的...