一、Spring的核心机制:依赖注入
依赖注入以配置文件管理Bean实例之间的耦合,让Bean实例之间的耦合从代码层次分离出来。依赖注入是一种优秀的解耦方式。
Spring IoC容器的3个基本要点:
①应用程序的各组件面相接口编程。面相接口编程可以将各组件之间的耦合提升到接口层次,从而有利于项目后期的扩展。
②应用程度的各组件不再由程序主动产生,而是由Spring容器来负责产生、并初始化。
③Spring采用配置文件、或Annotation来管理Bean的实现类、依赖关系,Spring容器则根据配置文件、利用反射来创建实例,并为之注入依赖关系
依赖注入有两种方式:设值注入和构造注入
①设值注入:程序中定义set方法(反射时调用),配置文件中配置其属性<property name="XXX" ref="XXXbeanid"/>
②构造注入:通过构造函数设置,配置文件中配置其构造函数的参数类型<constructor-arg index="0" ref="XXXbeanid"/>
构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入。
建议采用以设值注入为主,构造注入为辅的注入策略。
二、Spring核心接口(主要用ApplicationContext)
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。
Application包括BeanFactory的全部功能,因此建议优先使用ApplicationContext。除非对某些内存非常关键的应用才考虑使用BeanFactory。
当系统创建ApplicationContext容器时,默认会预初始化所有的singleton Bean。也就是说,当ApplicationContext容器初始化完成后,容器中所有singleton Bean也实例化完成。这意味着:系统前期创建ApplicationContext时将有较大的系统开销,但一旦ApplicationContext初始化完成,程序后面获取singleton Bean实例时将拥有较好的性能。
三、ApplicationContext的事件机制
ApplicationContext的事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext的事件处理。
Spring提供如下几个内置事件:
要想定义自己的Event则只需定义一个继承ApplicationEvent的类,而要想实现自己的监听器则只需定义一个实现ApplicationListener接口的类(实现该接口必须实现如下方法:onApplicationEvent(ApplicationEvent event)每当容器内发生任何事件时,此方法都被触发),为Spring容器注册事件监听器,只需要在xml文件中配置该bean(监听器类)即可。
跟别的事件机制有点不同的地方是,程序可以主动调用ApplicationContext的publishEvent()方法来主动触发容器事件
ApplicationContext ctx =new ClassPathXmlApplicationContext("bean.xml"); EmailEvent ele=new EmailEvent(); ctx.publishEvent(ele);
通过bean反向访问容器,Spring提供两个接口:BeanFactoryAware和ApplicationContextAware,只要实现setBeanFactory和setApplicationContext方法即可得到,虽然这样让Bean拥有了访问容器的能力,但污染了代码,导致代码与Spring接口耦合在一起。因此如不是特别必要,建议不要直接访问容器。
相关推荐
展示了spring cloud的基本用法。包括:1)一个基本的spring boot应用。2)分布式配置管理服务端。3)分布式配置管理客户端(微服务应用)。4)服务注册服务端。5)服务注册发现客户端(微服务应用)。6)实现spring ...
Spring mvc中@RequestMapping 6个基本用法小结
描述:Spring Boot中文文档是Spring Boot官方文档的中文翻译版,它包含了Spring Boot的基本介绍、快速入门、核心特性、高级特性等内容,可以帮助用户快速了解和掌握Spring Boot的使用方法和技巧。 Spring Boot是一款...
一、 开始使用annotation配置Spring 16 二、 @Autowired、@Qualifier 16 (一) @Autowired 16 (二) @Qualifier 17 三、 @Resource(重要、推荐) 17 (一) JSR-250 17 (二) @Resource 17 四、 @Componet 18 五、 @Scope...
2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。 3、5种通知。 3.1、@Before,前置通知,放在方法头上。 3.2、@After,后置【finally】通知,放在方法头上。 3.3、@AfterReturning,后置...
该文件包含了,SpringData 的一些基本使用方法和Repository 的一些子接口的使用,以及快速分页方法的实现
本书由浅入深,循序渐进地介绍了Spring的体系结构和相关知识点,目的是帮助初学者快速掌握Spring,并能使用Spring进行应用程序的开发。本书最大的特色在于每章都是由浅入深,从一个简单的示例入手,让读者快速了解本...
使用方法的返回值进行注入 4.3.6.IFactoryObject接口的其它实现 4.3.6.1.Log4Net 4.3.7.使用depends-on 4.3.8.自动装配协作对象 4.3.9.检查依赖项 4.4.类型转换 4.4.1.枚举类型的转换 4.4.2.内置的类型转换器 4.4.3....
6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...
Spring5 是一个重要的版本,距离SpringFramework4差不多四年。在此期间,大多数增强都是在 SpringBoot 项目中完成的。在本文中,我们将很快了解到Spring5发行版中的一些令人兴奋的特性。 1. 基准升级 要构建和运行...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
公司内部讲义,比较了SOA,RMI和Spring HttpInvoker。并介绍了Spring HttpInvoker的基本使用方法。
Spring cloud 实战项目(Spring cloud zuul、spring cloud eureka、spring cloud ...集成mybatis、mq消息队列等、是Spring cloud学习的一个样例工程,通过这个工程, 基本掌握Spring cloud 各个组件的功能及使用方法)
描述:Spring Framework中文文档.pdf是Spring Framework官方文档的中文翻译版,它包含了Spring Framework的基本介绍、核心特性、应用场景等内容,可以帮助用户深入了解和掌握Spring Framework的使用方法和技巧。...
从应用场景分析,到基本用法的入门案例,再到高级特性的分析及使用,最后是执行原理的源码分析。让学生通过学习本套课程不仅可以知其然,还可以知其所以然。最终通过一个综合案例,实现灵活运用Spring框架中的各个...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
管理 Bean 从第一个 Spring 应用程式开始,逐步了解何谓依赖注入,以及如何使用 Spring 的容器功能来管理 Bean,了解 Bean 在 Spring 容器中的生命周期。 第一个 Spring 程式 BeanFactory、 ...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
1 Spring基本特征 6 2 Spring的组成 6 2.1 Spring的jar包 6 2.2 Spring配置文件 7 2.3 Spring API 8 3 Spring基本功能详解 8 3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 ...