12.1 Aware
- 我们设计的准则是解耦,这就意味着我们不能对Spring的IoC容器有直接的依赖,但是我们还是想我们的bean能识别容器的资源;
- 使用aware能让我们在应用的任意位置获得spring容器的资源;
- 我们通过实现aware接口来识别spring容器的资源;
- Spring包含的aware有:
- BeanNameAware
- BeanFactoryAware
- ApplicationContextAware
- MessageSourceAware
- ApplicationEventPublisherAware
- ResourceLoaderAware
- 实现ApplicationContextAware接口,可识别所有的资源,但最好是你用到什么就使用什么;
- 这也就意味着我们就耦合到了spring框架上了,没有spring框架你的代码将无法执行;
12.2 示例
12.2.1 新建演示bean
package com.wisely.aware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
@Component
public class DemoBean implements BeanNameAware,ResourceLoaderAware{
private String name;
private ResourceLoader loader;
//BeanNameAware接口的方法
public void setBeanName(String beanName) {
this.name = beanName;
}
//ResourceLoaderAware接口的的方法
public void setResourceLoader(ResourceLoader resourceLoader) {
this.loader = resourceLoader;
}
public String getName() {
return name;
}
public ResourceLoader getLoader() {
return loader;
}
}
12.2.2 新建演示用文件info.txt
jhkljhlkjhlkj
111111111111
12.2.3 测试
package com.wisely.aware;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
public class Main {
public static void main(String[] args) throws IOException {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext("com.wisely.aware");
DemoBean db = context.getBean(DemoBean.class);
System.out.println(db.getName());
ResourceLoader rl = db.getLoader();
Resource r = rl.getResource("classpath:com/wisely/aware/info.txt");
System.out.println(IOUtils.toString(r.getInputStream()));
context.close();
}
}
输出结果
demoBean
jhkljhlkjhlkj
111111111111
相关推荐
在Spring框架中,`Spring-Aware`接口是一个重要的概念,它允许我们与Spring的应用上下文(ApplicationContext)进行交互,从而获取或操作由Spring管理的Bean。`ApplicationContextAware`是其中的一个典型接口,当...
CVPR 2022 Image Dehazing Transformer with Transmission-Aware 3D Position Embedding 源代码,很有学习价值,大佬任文琦团队的最新去雾杰作,从3D定位的角度去思考去雾。CVPR 2022 Image Dehazing Transformer ...
Interest-aware Message-Passing GCN for Recommendat.md
javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享
javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享
javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享
Wi-Fi Aware™ Specification Version 3.2 Wi-Fi Aware™ Specification Version 3.2 是 Wi-Fi Alliance 发布的一份技术规范文档,主要介绍 Wi-Fi Aware™ 技术的详细规范和实现细节。下面是该规范的详细解读: ...
javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享
javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享
javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享
本知识点根据提供的Spring官方文档内容,详细解释了Spring核心框架中的一些关键知识点。 1. IoC容器 控制反转(Inversion of Control,简称IoC)是Spring框架的核心理念,它通过依赖注入(Dependency Injection,...
下面我们将深入探讨Spring的Aware感知特性及其相关知识点。 1. **BeanFactoryAware** BeanFactoryAware接口提供了一个方法`setBeanFactory(BeanFactory beanFactory)`,允许bean获取到当前的BeanFactory实例。这样...
Spring的AOP模块提供了声明式事务管理,允许开发者定义横切关注点,如日志、安全、缓存等,这些关注点可以在多个业务方法上统一处理。2.5.4版本对AOP的性能进行了优化,提升了处理速度。 3. **Spring MVC** ...
Spring Aware BeanNameAware BeanFactoryAware ApplicationContextAware MessageSourceAware ApplicationEventPublisherAware ResourceLoaderAware 多线程 计划任务 cron fixDelay ...
### Spring Framework 4 参考文档关键知识点概览 #### 一、Spring Framework 总览 **1. 开始** - **Spring Framework**:一个轻量级且全面的Java应用开发框架,提供了完整的解决方案来简化企业级应用程序的开发...
2007年Shai Avidan 和Ariel Shamir论文《Seam Carving for Content-Aware Image Resizing》所提出方法的Matlab代码实现和作者的论文。 效果非常炫,而且代码不长
《Context-aware Visual Tracking》是2009年发表在Pattern Analysis and Machine Intelligence (PAMI) 上的一篇重要论文,该文深入探讨了上下文感知在视觉跟踪中的应用。上下文感知(Context-aware)技术在计算机...
- **1.6.3 其他Aware接口**: Spring还提供了其他的一些Aware接口,如`EnvironmentAware`等,使得Bean能够获取更多的上下文信息。 以上是对《spring-core.pdf》文档中关于Spring IoC容器的核心内容的总结。通过理解...
Spring 3.1.0的AOP支持允许开发者编写横切关注点,如日志、事务管理等,这些关注点可以被“织入”到目标对象中,实现代码的解耦。通过@Aspect注解和Pointcut表达式,AOP的使用变得更加直观和便捷。 3. **模块化...