8 -- 深入使用Spring -- 3...3 使用Resouce作为属性
2023-09-11 14:14:57 时间
8.3.3 使用Resouce作为属性
当应用程序中的Bean实例需要访问资源时,Spring可以直接利用依赖注入。
如果Bean实例需要访问资源,有如下两种解决方案:
⊙ 在代码中获取Resource实例。
⊙ 使用依赖注入。
在代码中获取Resource实例:当程序获取Resource实例时,总需要提供Resource所在的位置,不管通过FileSystemResource创建实例,还是通过ClassPathResource创建实例,或者通过ApplicationContext的getResource()方法获取实例,都需要提供资源位置。这意味着:资源所在的物理位置将被耦合到代码中,如果资源位置放生改变,则必须改写程序。
使用依赖注入:让Spring为Bean实例依赖注入资源。
Class : TestBean
package edu.pri.lime._8_3_3.bean.impl; import org.springframework.core.io.Resource; public class TestBean { private Resource res; public void setRes(Resource res) { this.res = res; } public void parse(){ System.out.println(res.getFilename()); System.out.println(res.getDescription()); } public Resource getRes() { return res; } }
XML :
<?xml version="1.0" encoding="UTF-8"?> <!-- Spring 配置文件的根元素,使用Spring-beans-4.0.xsd语义约束 --> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:P="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <bean id="testBean" class="edu.pri.lime._8_3_3.bean.impl.TestBean" > <!-- 可以使用file:、http:、ftp:等前缀强制Spring采用对应的资源访问策略 --> <!-- 如果不采用任何前缀,则Spring将采用与该ApplicationContext相同的资源访问策略来访问资源 --> <property name="res" value="classpath:book.xml"/> </bean> </beans>
Class : SpringTest
package edu.pri.lime._8_3_3.bean.main; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import edu.pri.lime._8_3_3.bean.impl.TestBean; public class SpringTest { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("app_8_3_3.xml"); TestBean testBean = ctx.getBean("testBean",TestBean.class); testBean.parse(); } }
采用依赖注入,允许动态配置资源文件位置,无须将资源文件位置写在代码中,当资源文件位置发生变化时,无须改写程序,直接修改配置未见即可。
啦啦啦
啦啦啦
相关文章
- 如何运行Spring Boot应用
- Spring获取properties文件中的属性
- 【Spring Boot】Spring Boot之使用 Spring Boot Configuration Processor 完成设置自定义项目属性自动补全
- spring cloud: zuul: 微网关-简单使用与路由配置
- spring: 在Spring应用中使用JDBC(使用profiles选择数据源/使用基于JDBC驱动的数据源)
- spring属性注入DI
- Dubbo 3.0 前瞻:重塑 Spring Cloud 服务治理
- [Spring学习笔记 3 ] spring 注解详解,完全注解,常用注解
- [Spring学习笔记 2 ]装配各种类型的属性 map,list,array,null,properties
- spring boot: 通过filter过滤器实现中文的简体繁体字符集转换(spring boot 2.3.1)
- [Spring学习笔记 3 ] spring 注解详解,完全注解,常用注解
- Spring注解开发-属性依赖注入
- spring学习12 -Spring 框架模块以及面试常见问题注解等
- Spring实战6-利用Spring和JDBC访问数据库
- Atitit spring 定时器 CRON表达式 含义 目录 1.1. 大概流程1 1.2. 核心源码springboot1 1.3. Cron表达式属性——String2 1.4
- @Value的使用 《Spring源码解析》java笔记
- 学习Spring Boot:(十四)spring-shiro的密码加密
- spring为类的静态属性实现注入
- spring boot 使用 AOP 的正确姿势 --- 心得
- 008-shiro与spring web项目整合【二】认证、授权、session管理
- java普通类如何调用Spring的Service层?
- 生命周期,探秘Spring容器的SmartLifecycle接口