【spring bean】spring中bean的懒加载和depends-on属性设置-阿里云开发者社区

开发者社区> angel挤一挤> 正文

【spring bean】spring中bean的懒加载和depends-on属性设置

简介: 项目结构如下:   ResourceBean.java代码: 1 package com.it.res; 2 3 import java.io.File; 4 import java.
+关注继续查看

项目结构如下:

 

ResourceBean.java代码:

 1 package com.it.res;
 2 
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class ResourceBean {
 9     
10     private FileOutputStream out;
11     private File file;
12     
13     public void init(){
14         System.out.println("初始化的方法!!!!!--->加载资源");
15         try {
16             this.out = new FileOutputStream(file);
17             
18         } catch (FileNotFoundException e) {
19             e.printStackTrace();
20         }
21     }
22     
23     
24     public void destroy(){
25         System.out.println("销毁的方法!!!--->清理内存");
26         try {
27             out.close();
28         } catch (IOException e) {
29             e.printStackTrace();
30         }
31     }
32     
33     public FileOutputStream getOut(){
34         return out;
35     }
36     
37     public void setFile(File file){
38         this.file=file;
39     }
40 }
View Code

 

DependentBean.java代码:

 1 package com.it.res;
 2 
 3 import java.io.IOException;
 4 
 5 public class DependentBean {
 6     ResourceBean bean;
 7     public void write(String ss){
 8         System.out.println("写入资源");
 9         try {
10             bean.getOut().write(ss.getBytes());
11         } catch (IOException e) {
12             e.printStackTrace();
13         }
14     }
15     
16     public void init(){
17         System.out.println("depen--->初始化");
18         try {
19             bean.getOut().write("depen---->初始化".getBytes());
20         } catch (IOException e) {
21             e.printStackTrace();
22         }
23     }
24     
25     public void destroy(){
26         System.out.println("depen--->销毁");
27         try {
28             bean.getOut().write("depen--->销毁".getBytes());
29         } catch (IOException e) {
30             e.printStackTrace();
31         }
32     }
33 
34     public ResourceBean getBean() {
35         return bean;
36     }
37 
38     //设置注入
39     public void setBean(ResourceBean bean) {
40         this.bean = bean;
41     }
42     
43     
44     
45 }
View Code

resWrite.xml代码:

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2 <beans  
 3 xmlns="http://www.springframework.org/schema/beans"  
 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 5 xmlns:context="http://www.springframework.org/schema/context"  
 6 xsi:schemaLocation="  
 7 http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
 8 http://www.springframework.org/schema/context                http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
 9 
10 
11     <!-- init-method  指定初始化方法,在构造器注入和setter注入完毕后执行。    destroy-method   只有“singleton”作用域能销毁,“prototype”作用域的一定不能,其他作用域不一定能    lazy-init="true"表示懒加载,不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean-->
12      <bean id="resourceBean" class="com.it.res.ResourceBean" init-method="init" destroy-method="destroy" lazy-init="true">
13          <property name="file" value="F:/test/a.txt"> </property><!-- Spring容器能自动把字符串转换为java.io.File   -->
14      </bean>
15     
16     <!-- 指定depends-on  则resourceBean会在dependentBean之前初始化,在dependentBean销毁之后销毁-->
17     <bean id="dependentBean" class="com.it.res.DependentBean" init-method="init" destroy-method="destroy" depends-on="resourceBean">
18         <property name="bean" ref="resourceBean"></property>
19     </bean>
20     
21 </beans>  
View Code

 

测试类Test.java代码:

 1 package com.it.res;
 2 
 3 import org.springframework.context.support.FileSystemXmlApplicationContext;
 4 
 5 public class Test {
 6     
 7     @org.junit.Test
 8     public void testDepen(){
 9         FileSystemXmlApplicationContext app = new FileSystemXmlApplicationContext("resources/resWrite.xml");
10         //一定要注册销毁回调,否则我们定义的销毁方法不执行
11         app.registerShutdownHook();
12         DependentBean bean = (DependentBean) app.getBean("dependentBean");
13         bean.write("\r\n德玛西亚\r\n");
14     }
15 }
View Code

 

测试完成,控制打印如下:

 

文件写入:

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CentOS之yum本地DVD源设置
如果你的网速比较慢,那么就直接挂上iso光盘文件吧,这样不仅能得到飞快的安装速度,更不用去管各个RPM包的依赖,就是一个yum install xxx,然后就让电脑自己搞定吧。
622 0
springboot设置静态资源不拦截的方法
springboot设置静态资源不拦截的方法 springboot不拦截静态资源需配置如下的类: import org.springframework.context.
2425 0
NetBeans主题配色方案加设置
1.网上下载主题的地址是:http://netbeansthemes.com/ **上面的主题我看了下但是感觉不太适合自己所以自己就仿照的设置了下下面我附上自己的配置信息 感兴趣的可以下载下来自己看下是否适合自己 链接为https://pan.
1245 0
Jquery 获取和设置元素属性值
Jquery 获取和设置元素属性值 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1072 0
前端如何实现图片懒加载(lazyload) 提高用户体验
定义 图片懒加载又称图片延时加载、惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力。
837 0
请将项目文件中的“AutoGenerateBindingRedirects”属性设置为 true 警告!!!
原文:请将项目文件中的“AutoGenerateBindingRedirects”属性设置为 true 警告!!!
1924 0
+关注
angel挤一挤
【任何0基础都能看懂的步骤和解决方法!】
340
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载