`

Spring基本用法(一)

 
阅读更多

一、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接口耦合在一起。因此如不是特别必要,建议不要直接访问容器。

  • 大小: 35.9 KB
  • 大小: 8.9 KB
  • 大小: 93.1 KB
分享到:
评论

相关推荐

    展示spring cloud的基本用法

    展示了spring cloud的基本用法。包括:1)一个基本的spring boot应用。2)分布式配置管理服务端。3)分布式配置管理客户端(微服务应用)。4)服务注册服务端。5)服务注册发现客户端(微服务应用)。6)实现spring ...

    Spring mvc中 RequestMapping 6个基本用法小结

    Spring mvc中@RequestMapping 6个基本用法小结

    spring-boot中文教程

    描述:Spring Boot中文文档是Spring Boot官方文档的中文翻译版,它包含了Spring Boot的基本介绍、快速入门、核心特性、高级特性等内容,可以帮助用户快速了解和掌握Spring Boot的使用方法和技巧。 Spring Boot是一款...

    Spring的学习笔记

    一、 开始使用annotation配置Spring 16 二、 @Autowired、@Qualifier 16 (一) @Autowired 16 (二) @Qualifier 17 三、 @Resource(重要、推荐) 17 (一) JSR-250 17 (二) @Resource 17 四、 @Componet 18 五、 @Scope...

    Spring AOP @Aspect 基本用法

    2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。 3、5种通知。 3.1、@Before,前置通知,放在方法头上。 3.2、@After,后置【finally】通知,放在方法头上。 3.3、@AfterReturning,后置...

    SpringData的使用

    该文件包含了,SpringData 的一些基本使用方法和Repository 的一些子接口的使用,以及快速分页方法的实现

    Spring从入门到精通 源码

    本书由浅入深,循序渐进地介绍了Spring的体系结构和相关知识点,目的是帮助初学者快速掌握Spring,并能使用Spring进行应用程序的开发。本书最大的特色在于每章都是由浅入深,从一个简单的示例入手,让读者快速了解本...

    spring.net中文手册在线版

    使用方法的返回值进行注入 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....

    Spring 2.0 开发参考手册

    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. ...

    Spring_Framework_ API_5.0.5 (CHM格式)

    Spring5 是一个重要的版本,距离SpringFramework4差不多四年。在此期间,大多数增强都是在 SpringBoot 项目中完成的。在本文中,我们将很快了解到Spring5发行版中的一些令人兴奋的特性。 1. 基准升级 要构建和运行...

    Spring-Reference_zh_CN(Spring中文参考手册)

    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来...

    Spring HttpInvoker介绍

    公司内部讲义,比较了SOA,RMI和Spring HttpInvoker。并介绍了Spring HttpInvoker的基本使用方法。

    springcloud项目Demo

    Spring cloud 实战项目(Spring cloud zuul、spring cloud eureka、spring cloud ...集成mybatis、mq消息队列等、是Spring cloud学习的一个样例工程,通过这个工程, 基本掌握Spring cloud 各个组件的功能及使用方法)

    spring-framework教程

    描述:Spring Framework中文文档.pdf是Spring Framework官方文档的中文翻译版,它包含了Spring Framework的基本介绍、核心特性、应用场景等内容,可以帮助用户深入了解和掌握Spring Framework的使用方法和技巧。...

    Spring高级之注解驱动开发视频教程

    从应用场景分析,到基本用法的入门案例,再到高级特性的分析及使用,最后是执行原理的源码分析。让学生通过学习本套课程不仅可以知其然,还可以知其所以然。最终通过一个综合案例,实现灵活运用Spring框架中的各个...

    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 MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    开源框架 Spring Gossip

    管理 Bean 从第一个 Spring 应用程式开始,逐步了解何谓依赖注入,以及如何使用 Spring 的容器功能来管理 Bean,了解 Bean 在 Spring 容器中的生命周期。 第一个 Spring 程式 BeanFactory、 ...

    Spring API

    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.doc

    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 ...

Global site tag (gtag.js) - Google Analytics