一、ApplicationContextAware接口
在实现类注入ApplicationContext实例。代码展示如下:
public class Animal implements ApplicationContextAware, BeanNameAware{ private String beanName; private ApplicationContext applicationContext; public void setBeanName(String name) { this.beanName = name; } /** * @param applicationContext 该参数将由Spring容器自动赋值 */ public void setApplicationContext(ApplicationContext applicationContext)throws BeansException { this.applicationContext = applicationContext; } public void run(){ System.out.println(beanName); //发布自定义事件 AnimalEvent event = new AnimalEvent(this, "老虎"); applicationContext.publishEvent(event); } }
通过@Autowired注解可以自动装配一些常用对象实例:
@Autowired private MessageSource messageSource; @Autowired private ResourceLoader resourceLoader; @Autowired private ApplicationContext applicationContext;
二、BeanNameAware接口
在实现类注入当前bean在容器中的id/name。
更多Aware接口:
ApplicationEventPublisherAware:可获取ApplicationEventPublisher,用于发布事件
BeanClassLoaderAware:注入加载该bean的ClassLoader
BeanFactoryAware:将当前的beanFactory注入到该bean实例中
BootstrapContextAware:
EmbeddedValueResolverAware:
EnvironmentAware:
ImportAware:
LoadTimeWeaverAware:可获取LoadTimeWeaver实例,用于在加载时处理类定义
MessageSourceAware:可获取MessageSource实例
NotificationPublisherAware:可获取JMX通知发布者
ResourceLoaderAware:可获取Spring中配置的加载程序(ResourceLoader),用于对资源进行访问
SchedulerContextAware:
ServletConfigAware:用于获取ServletConfig
ServletContextAware:用于获取ServletContext
三、ApplicationEvent抽象类
当需要创建自定义事件时,可以新建一个继承自ApplicationEvent抽象类的类。代码展示如下:
/** * 自定义事件 */ public class AnimalEvent extends ApplicationEvent { private String name; public String getName() { return name; } /** * @param source 事件源对象 */ public AnimalEvent(Object source){ super(source); } public AnimalEvent(Object source, String name){ super(source); this.name = name; } }
四、ApplicationListener接口
当需要监听自定义事件时,可以新建一个实现ApplicationListener接口的类,并将该类配置到Spring容器中。代码展示如下:
/** * 自定义事件监听器 */ public class CustomEventListener implements ApplicationListener { public void onApplicationEvent(ApplicationEvent event) { if(event instanceof AnimalEvent){ AnimalEvent animalEvent = (AnimalEvent)event; System.out.println("触发自定义事件:Animal name is " + animalEvent.getName()); } } }
<!-- 自定义事件监听器:Spring容器自动注册它 --> <bean id="customEventListener" class="com.cjm.spring.CustomEventListener"/>
要发布自定义事件,需要调用ApplicationContext的publishEvent方法,具体用法请看Animal类的源码。
五、InitializingBean接口
当需要在bean的全部属性设置成功后做些特殊的处理,可以让该bean实现InitializingBean接口。
效果等同于bean的init-method属性的使用或者@PostContsuct注解的使用。
三种方式的执行顺序:先注解,然后执行InitializingBean接口中定义的方法,最后执行init-method属性指定的方法。
六、DisposableBean接口
当需要在bean销毁之前做些特殊的处理,可以让该bean实现DisposableBean接口。
效果等同于bean的destroy-method属性的使用或者@PreDestory注解的使用。
三种方式的执行顺序:先注解,然后执行DisposableBean接口中定义的方法,最后执行destroy-method属性指定的方法。
相关推荐
在Spring AOP中,如果目标类没有实现接口,CGLIB就会生成一个子类来实现对目标类的方法拦截。CGLIB也是许多其他Java库的依赖,如Hibernate。 4. commons-logging.jar:Apache Commons Logging是Java的日志抽象层,...
### 普通JavaWeb项目调用Spring Cloud接口详解 #### 前言 在现代软件开发中,微服务架构已成为构建大型复杂系统的主流选择之一。Spring Boot 和 Spring Cloud 作为构建微服务的重要工具,其易用性和强大的功能受到...
然后,创建一个实现此接口的类,使用WebServiceTemplate进行实际的Web Service调用。 ```java public interface YourWebService { YourResponseType callYourService(YourRequestType request); } @Service ...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。在本压缩包中,你可能会找到一系列与Spring相关的jar包,...
以上只是Spring框架部分核心模块的简要介绍,每个模块都包含了大量的类和接口,它们共同构成了一个强大且灵活的开发平台,帮助开发者高效地构建复杂的企业级应用。通过理解并熟练掌握这些jar包中的知识点,开发者...
在Spring Boot中,我们可以使用`@RestController`注解来标识一个类作为REST控制器,`@RequestMapping`和`@GetMapping`、`@PostMapping`等注解用于定义URL映射,从而轻松实现API接口的创建。 此外,Spring Boot还...
本文来自程序猿,本文主要介绍了SpringCloud微服务下服务接口调试及管理,什么样方式可以让微服务的接口管理变得更加容易些...而有些微服务则会提供一些公共性质的服务接口,如短信接口统一认证接口之类。而这些微服务往
5. `org.springframework.asm`:这个包包含了对ASM库的封装,用于动态生成Java类和接口,通常用于AOP代理的实现。 6. `org.springframework.aspects`:这个包包含了与AspectJ集成的相关类,使得Spring可以支持更...
`ApplicationContextAware`是其中的一个典型接口,当我们想要在非托管类(即非Spring Bean)中获取Spring容器中的其他Bean时,可以使用这个接口。 `ApplicationContextAware`接口提供了`setApplicationContext`方法...
6. **CXF_Spring中的示例**:在提供的压缩包文件"CXF_Spring"中,可能包含了示例代码、配置文件以及相关文档,用于演示如何整合CXF和Spring进行SOAP接口开发。通过研究这些示例,开发者可以更好地理解和实践上述知识...
在本项目中,我们利用Apache CXF、Spring框架和RESTful风格来构建一个Web服务接口。这个源代码示例展示了如何将这三种技术融合在一起,为开发者提供了一种高效、灵活的方式来开发分布式应用程序。 首先,Apache CXF...
这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及异常处理的负担。下面我们将深入探讨SpringJdbcTemplate的相关知识点。 1. **SpringJdbcTemplate...
在Spring Boot中,我们可以使用`@RestController`注解来创建RESTful API,这是一个结合了@Controller和@ResponseBody的注解,表示该类将处理HTTP请求并返回JSON或XML响应。 对于GET接口,我们可以使用`@GetMapping`...
Spring 框架是一个功能强大且广泛使用的 Java 应用程序框架,它提供了许多重要的类和接口来帮助开发者快速构建企业级应用程序。下面我们将对 Spring 框架中的几个重要类和接口进行详细解析。 1. DataSource 接口 ...
{"code":200,"data":[{"age":12,"name":"12","sex":"男","username":"张三","userpassword":"123"},{"age":22,"name":"12","sex":"女","username":"李白","userpassword":"4576"}]}
在"压缩包子文件的文件名称列表"中提到的`test`可能是测试相关的文件,如测试类、配置文件或模拟数据,它们用于验证接口查询功能的正确性和性能。 综上所述,SpringCloud微服务接口查询Demo涵盖了微服务架构中的多...
然后,在Spring配置文件中,你需要配置HttpInvokerServiceExporter,指定要导出的服务bean和接口: ```xml <bean id="httpInvokerExporter" class="org.springframework.remoting....
Spring 2.5 是 Spring 框架的一个重要版本,它在之前的版本基础上引入了许多增强功能和改进,为开发者提供了更强大的工具集。这个压缩包包含的“spring常用包”很可能是为了帮助开发者理解并使用 Spring 2.5 的核心...
在这个登录接口中,Spring MVC可能包含一个Controller类,该类处理登录请求,调用服务层进行验证,最后返回登录结果。 4. **MySQL**:MySQL是一个流行的开源关系型数据库管理系统,用于存储和检索数据。在这个登录...
本教程将通过一个具体的"CXF+Spring接口实例"来探讨如何使用这两种技术实现Web服务并进行测试。 首先,让我们理解CXF的核心功能。CXF允许开发者使用Java编程语言来实现Web服务接口,这被称为Java API for RESTful ...