SpringAware
哈哈,终于把分布式的课程演讲给混过去了,下面开始随便自己学点东西。
正题:SpringAware--------在实际项目中,用到spring容器的本省功能资源,这是Bean必须意识到Spring容器的存在,才能调用Spring容器所提供的资源,这就是所谓的Spring Aware.
分两部分,一部分演示书上的列子,一部分用SpringBoot改进,注此列是参照SpringBoot的一本书学习而来,具体不记得了。
一 BeanNameAware--------------获得容器中Bean的名字
BeanFactoryAware------------获得当前容器的BeanFactory,这样可以调用容器的服务
ApplicationContextAware-----获得当前容器的ApplicationContext,这样可以调用容器的服务
ApplicationEventPublisherAware----应用时间发布器,可以发布事件
ResourceLoaderAware-------获得资源加载器,可以获得外部文件
1 继承两个接口并分别重写,BeanNameAware,ResourceLoaderAware这样就分别从容器总拿到了Bean和资源加载器。
package org.sselab.service; import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service; import java.io.IOException; /**
* Created by pinker on 2016/11/8.
*/
@Service
public class AwareService implements BeanNameAware, ResourceLoaderAware {
private String name;
private ResourceLoader loader; @Override
public void setBeanName(String s) {
this.name = s;
} @Override
public void setResourceLoader(ResourceLoader resourceLoader) {
this.loader = resourceLoader;
} public void outputResult() {
System.out.println("Bean的名称是:" + name); Resource resource =
loader.getResource("classpath:test.txt");
try {
System.out.println(IOUtils.toString(resource.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
2 配置类
package org.sselab.conf; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; /**
* Created by pinker on 2016/11/8.
*/
@Configuration
@ComponentScan("org.sselab")
public class AwareConfig { }
3 运行主类
package org.sselab; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.sselab.conf.AwareConfig;
import org.sselab.service.AwareService; /**
* Created by pinker on 2016/11/8.
*/
public class Application { public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AwareConfig.class); AwareService service = context.getBean(AwareService.class);
service.outputResult();
context.close();
}
} 分析一下,2是个配置类,肯定可以用SpringBootApplication来代替,这里我们伪造一个访问资源,看看能不能输出。
public String getContext(){
Resource resource =loader.getResource("classpath:test.txt");
String result= null;
try {
result = IOUtils.toString(resource.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
然后构造访问的controller和主启动类OK了,完成了!
实验结果如果所想,其实就是因为少了配置和采用了自动注入,所以没有本质的区别。
SpringAware的更多相关文章
- JUnit4的使用2
package com.imooc.test.aware; import org.junit.Test; import org.junit.runner.RunWith; import org.jun ...
- Spring课程 Spring入门篇 3-3 Spring bean装配(上)之aware接口
课程链接: 本节主要介绍了以下内容: 1 aware介绍 2 代码演练 3 课程总结 1 aware介绍 1.1 为什么要使用aware? 在java类中,可以方便的获取xml配置文件中的bean的各 ...
- Spring Bean Life Cycle Methods – InitializingBean, DisposableBean, @PostConstruct, @PreDestroy and *Aware interfaces
Spring Beans are the most important part of any Spring application. Spring ApplicationContext is res ...
- spring学习六----------Bean的配置之Aware接口
© 版权声明:本文为博主原创文章,转载请注明出处 Aware Spring提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化后,可以获取相应的资源 通过Aware接口,可以对S ...
- 阿里P7工作总结:Spring MVC的工作原理,看完受益匪浅
这篇文章将深入探讨Spring框架的一部分——Spring Web MVC的强大功能及其内部工作原理. 项目安装 在本文中,我们将使用最新.最好的Spring Framework 5.我们将重点介绍S ...
随机推荐
- c#中list使用示例
protected void Page_Load(object sender, EventArgs e) { List<string> studentNames = new List< ...
- 通过ssh秘钥的方式可以连接上CE68交换机
结论:按照CE68交换机的用户手册中的指导,可以通过ssh 秘钥的方式连接上交换机. 1.先按照eNSP连接到网卡的方式,给CE68配置一个ip地址: 192.168.56.2 2.按照交换机的用户指 ...
- CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景
全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css选择器全解 css操作语法全解 CSS样式设置语法全解: 样式优先级 1. !important标记的样式 > 内联样式(sty ...
- 【微信小程序开发】秒懂,架构及框架
今天1024程序员节,写文章庆祝!!! 今天的文章是讲微信小程序开发的,按理解把架构与框架说说.有不对之处请大神指点…… 微信小程序与web应用很像,但是原理不同,微信小程序是运行在微信应用内的,不是 ...
- 个人怎么申请微信小程序
1.打开微信公众平台(mp.weixin.qq.com).拉到中间的"账号分类",鼠标悬浮于"小程序"框中并点击"查看详情". 2.进入微信 ...
- LINUX 笔记-read命令
作用:读入值给变量 1.read 从键盘读入字符到name变量 2.read -p 'msg' var... 输入提示 3.read -s vars 隐藏输入 4.read读取文件时,每次调用会读取 ...
- 双端链表--Java实现
/*双端链表--比普通链表多了一个指向最后一个节点的引用 * 特点: 链表可以进行尾巴插入--输出顺序和输入顺序一致 * 但是不可以进行尾巴删除因为没有倒数第二节点的引用 * */ public cl ...
- session文件无法并发操作
session_start():打开服务器上的session文件. session_commit():会把$_SESSION数组的内容写入到服务器上的session文件中,但不会清空$_SESSION ...
- Python[1,1]
####################################################################################### //只是为了凑够150字 ...
- ArrayList 源码(基于Java1.8)
ArrayList 源码 ArrayList 基于数组实现,也就是类对变量 Object[]系列操作,封装为常用的add,remove,indexOf, contains本质是通过 size 计数器对 ...