Spring中资源文件

全球气候模式降尺度方法总结及其代码实现 简介总结各类型气候模式降尺度方法 阅读详情

Rrsource定义资源文件

常用的资源定义的实现类

a. ClassPathResource                从classpath中读取

b. FileSystemResource               从文件系统中读取

c. UrlResource                    从指定URL中读取

d. ServletContextResource          必须要在web环境下使用

使用案例

package com.cloud.resource;
import java.io.IOException;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;

public class ResourceTest {
	/**
	 * ClassPathResource
	 * @throws IOException
	 */
	@Test
	public void test1() throws IOException{
		Resource resouce1 = new ClassPathResource("com/cloud/resource/a.txt");
		//获取当前包路径下
		Resource resouce2 = new ClassPathResource("a.txt",this.getClass());
		System.out.println(resouce1.getFile().getAbsolutePath());
		System.out.println(resouce2.getFile().getAbsolutePath());
	}
	/**
	 * FileSystemResource
	 * @throws IOException
	 */
	@Test
	public void test2() throws IOException{
		Resource resource1 = new FileSystemResource("f:/data.json");
		System.out.println(resource1.exists());
		System.out.println(resource1.getFile().getAbsolutePath());
	}
	/**
	 * UrlResource
	 * @throws Exception
	 */
	@Test
	public void test3() throws Exception{
		Resource resource1 = new UrlResource("http://www.baidu.com");
		System.out.println(resource1.exists());
		System.out.println(resource1.getFile().getAbsolutePath());
	}
}

ApplicationContext定义资源文件

如果说BeanFactory是Spring的心脏,那么Application就是完整的身躯。ApplicationContext就是由BeanFactory派生出来的。

ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统加载文件。

使用案例

package com.cloud.resource;
import java.util.Arrays;
import java.util.Map;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.cloud.reply.UserDao;
public class ApplicationContextTest {
	@Test
	public void test1(){
		ApplicationContext ac1 = new ClassPathXmlApplicationContext("com/cloud/resource/applicationContext.xml");
		ApplicationContext ac2 = new ClassPathXmlApplicationContext("applicationContext.xml",this.getClass());
		System.out.println(ac1.getBeanDefinitionCount());
		System.out.println(Arrays.toString(ac1.getBeanDefinitionNames()));
		System.out.println(ac2.getBeanDefinitionCount());
		System.out.println(Arrays.toString(ac2.getBeanDefinitionNames()));
	}
	 /** 
	  * 一次加载多个配置文件 
	  * @throws Exception 
	  */  
	 @Test  
	 public void test2() throws Exception{  
	    //这里文件的加载不考虑先后顺序,会自动处理文件的依赖关系  
	    ApplicationContext ac1=new ClassPathXmlApplicationContext(new String[]{  
	    "com/cloud/day5/applicationContext_dao.xml",  
	    "com/cloud/day5/applicationContext_service.xml"  
	    });  
	    System.out.println(Arrays.toString(ac1.getBeanDefinitionNames()));  
	    ApplicationContext ac2=new ClassPathXmlApplicationContext(new String[]{  
	    "applicationContext_dao.xml","applicationContext_service.xml"  
	    },this.getClass());  
	    System.out.println(Arrays.toString(ac2.getBeanDefinitionNames()));  
	 }  
	 @Test  
	 public void testMrthod() throws Exception{  
	    ApplicationContext ac=new ClassPathXmlApplicationContext(  
	    "applicationContext_dao.xml",getClass());  
	    //获取指定类型的bean的名称  
	    String names[]=ac.getBeanNamesForType(UserDao.class);  
	    System.out.println(Arrays.toString(names));  
	     
	    //获取指定类型的bean的信息,(key是名称,value是对象实例)  
	    Map<String, UserDao> map=ac.getBeansOfType(UserDao.class);  
	    System.out.println(map);  
	 } 
}

外部文件的引入

编写jdbc.properties

jdbcUrl=jdbc:mysql:///qianxun
driverClass=com.mysql.jdbc.Driver
username=root
password=root

UserDao.java文件

public interface UserDao {
   void printInfo();
}

UserDaoImp.java文件

package com.cloud.demo4;
public class UserDaoImp implements UserDao{
   private String jdbcUrl;
   private String driverClass;
   private String username;
   private String password;
   public void printInfo(){
      System.out.println("jdbcUrl = "+jdbcUrl);
      System.out.println("driverClass="+driverClass);
      System.out.println("username="+username);
      System.out.println("password="+password);
   }
   public String getJdbcUrl() {
      return jdbcUrl;
   }
   public void setJdbcUrl(String jdbcUrl) {
      this.jdbcUrl = jdbcUrl;
   }
   public String getDriverClass() {
      return driverClass;
   }
   public void setDriverClass(String driverClass) {
      this.driverClass = driverClass;
   }
   public String getUsername() {
      return username;
   }
   public void setUsername(String username) {
      this.username = username;
   }
   public String getPassword() {
      return password;
   }
   public void setPassword(String password) {
      this.password = password;
   }
}

配置文件

   <!-- 引入外部属性文件 :方式一
      如果需要加载多个属性文件,就在最后加上文件名,使用逗号隔开
   -->
   <context:property-placeholder location="classpath:com/cloud/demo4/jdbc.properties"/>
  
   <!-- 引入外部文件:方式二
   <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="location">
         <list>
            <value>classpath:com/cloud/demo4/jdbc.properties</value>
         </list>
      </property>
   </bean>
    -->
   <!-- 配置UserDao对象 ,注入配置信息-->
   <bean id="userDao" class="com.cloud.demo4.UserDaoImp">
      <property name="jdbcUrl" value="${jdbcUrl}"/>
      <property name="driverClass" value="${driverClass}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
   </bean>

测试文件

package com.cloud.demo4;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest {
   @Test
   public void test1() throws Exception {
      ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml",getClass());
      UserDao userDao=(UserDao) ac.getBean("userDao");
      /**
       * 这里如果注释掉#username=root,系统就会自动寻找其他地方配置的username
       * 也可以自行设置缺少的属性
       * System.setProperty("username", "Spring");
       */
      userDao.printInfo();
      System.out.println("////////////搜索系统中的Properties文件配置的属性///////////////");
      for(Object key:System.getProperties().keySet()){
         Object value=System.getProperty((String)key);
         System.out.println(key+"\t=\t"+value);
      }
   }
}
华为面试手撕真题【最长不重复子串】 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 阅读详情

相关推荐

在WinXP操作系统上安装Tornado2.2详细教程

使用VxWorks的人都想在自己的电脑中装VxWorks的编译器Tornado,然而Win10操作系统对于Tornado并不友好,根本装不成功。而对于Win7操作系统,之前在实验室一台Win7上装Tornado成功过,并且一直在上面进行vx开发,但是过一段时间在其他Win7上装Tornado时又不能成功,由此说明Tornado对于Win7操作系统对Tornado的兼容也不是很好,所以想要长久使用T...

weixin_43822311的博客 4482

Spring 资源操作 Resources

Spring 资源操作 Resources

weixin_46759354的博客 590

STM32CUBEMX 使用教程5 — DMA配置 & 串口结合DMA实现数据搬运

DMA(Direct Memory Access),直接存储器访问(或数据搬运),是STM32中很实用的一个外设。DMA 传输数据方式不需要 CPU 参与控制传输,也不用中断处理的方式进行数据搬运处理,纯粹通过硬件为 RAM 与 I/O 设备之间开辟一条直接传送数据的通路,使 CPU 的效率大大提高。

weixin_43866583的博客 1500

SpringCloud--16微服务的部署(服务编排)

1.架构 pod是k8s中最小的一个单元,可以理解为k8s的一个原子,所有的服务都会部署在pod里面 pod运行在节点上面,kubelet负责调度pod,把pod运行在Node上面。 service:service的ip除了能对pod进行定位以外,还能对多个pod进行负载均衡。 整体的架构: 主节点: ApiServer:提供了资源操作的唯一的入口,并...

最后的武艺集大成者 3800

本地部署AI应用:基于Google Gemini的banana-prompt快速上手指南

AI应用开发的核心在于将大模型能力集成到实际场景中,其原理是通过API调用将用户输入转化为模型可理解的指令,再由模型生成响应。这一技术价值在于降低AI应用开发门槛,实现数据本地化处理与隐私保护。在工程实践中,开发者常面临环境配置复杂、API集成繁琐等挑战。本文聚焦于使用banana-prompt工具包,通过TypeScript技术栈和npm包管理,快速在Windows本地部署基于Google Gemini API的AI应用。该方案特别适用于ai-prompts提示词工程和content-creation内容

weixin_27188815的博客 316

华为OD机试真题 新系统2026-04-01 Python&JS【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 3235

Springboot资源文件属性配置(五)

spring-boot-configuration-processor,资源文件属性配置

wzcwmhp的博客 649

petalinux2022.2启动文件编译配置

petalinux2021之前的版本里,导入目录components/yocto/下的“environment-setup-aarch64-xilinx-linux” 和 “layers/core/oe-init-build-env”的环境,能使用Yocto的devtool工具。(加入下面内容,先petalinux-build下载完成后才能有源码)制作 BOOT.BIN 启动文件:petalinux-package --boot --fsbl --fpga --u-boot --force。

wangjie36的博客 1391

Spring-资源加载

在 Java 中,将不同来源的资源抽象成 URL,通过注册不同的 handler( URLStreamHandler) 来处理不同来源的资源的读取逻辑。 然而 URL没有默认定义相对 Classpath 或 ServletContext 等资源的 handler ,虽然可以注册自己的 URLStreamHandler 来解析特定的 URL 前缀(协议)。但是 URL 也没有提供基本的方法、如检查当前资源是否存在,检查资源是否存在等方法。 URL: 我可以加载各种的资源…XXX Spring: 你是个好人

CoderLi 830

康复训练监测系统:基于YOLOv8的患者动作规范识别

本文系统介绍了基于YOLOv8的康复训练动作规范识别系统,从理论背景、数据准备、模型训练、推理应用到UI界面,提供了完整技术链条及代码示范。希望对康复领域的智能监测应用提供参考和借鉴。

YOLO 453

YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 7441

SpringMVC访问静态资源的三种方式

SpringMVC访问静态资源的三种方式  如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。 目的:可以正常访问静态文件,不要找不到静态文件报404。 方案一:激活Tomcat的defaultServlet来处理静态文件&lt;...

lklong123的专栏 911

VS Code下载安装与使用教程

VSCode下载安装与使用教程

weixin_46713695的博客 4万+

Spring读取资源文件

读取资源文件方法有很多种,这里只说最简单、最实用、最方便的用法,通过spring注解@Value读取属性值: srpingMVC Spring配置文件(第一种) &amp;amp;lt;bean id=&amp;quot;propertyConfigurer&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&amp;quot;

Lailai Monkey的博客 1926

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring是如何实现资源文件的加载

其中Resource是所有资源类型的父类,可以通过继承该类实现其getInputStream方法,获取资源文件的输入流,之后用过该输入流对象就可以实现对文件内容的读取。在此之后,再次定义一个默认的资源文件加载器实现ResourceLoader,在getResource方法当中会根据传入的location格式动态匹配对应的解析方法。在Bean实例化之后需要对其中的属性进行注入,如下我们定义了一个People,现在需要将其加入到Spring容器当中,其中还包含了两个属性。无法实现,我们需要一个列表来储存。

几许的博客 1201

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring 中加载资源文件

 在Spring 中可以使用以下两个类加载资源文件:org.springframework.context.support.ResourceBundleMessageSource和org.springframework.context.support.ReloadableResourceBundleMessageSource后者可以不重起服务器的情况下,读取资源文件,所以可以随时更改资

让我们荡起双桨 3899

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring入门14 - 资源文件的取得

入门 14 - 资源文件的取得  首先来看看ApplicationContext接口的实作,之前我们使用了ClassPathXmlApplicationContext,这会读取CLASSPATH根目录(加上指定路径)中可获取的资源文件。 我们也可以使用FileSystemXmllApplicationContext,这会使用相对于工作根目录的档案路径来取得资源文件,例如若您的工 作目录是"c:

chho的专栏 2546

Spring动态加载资源文件

【代码】Spring动态加载资源文件。

碎银几两能解世间惆怅 250

spring 中的资源文件加载

spring 中资源文件的加载介绍

iCheetor 1951

利用spring提供的工具类读取资源文件

利用spring提供的工具类读取资源文件很多情况下自己写读取资源文件,都是通过I/O相关的类,File,InputStream,OutPutStream这些,很多方法可能都不记得,要去查资料,很不方便。相比I/O,spring的 org.springframework.core.io.Resource接口抽象层面更高,更适合操作资源文件。Spring 提供了若干 Resource 接口的实现类,这些

loveschen的博客 1万+

Spring学习-Spring中对资源文件的封装

在开发过程中,对不同国家语言的支持,一般采用独立的资源文件(如一个properties文件)完成所有语言信息的配置,在SPRING中对这种方式进行了封装,首先定义好资源文件,如上:tavorResource.propertiesguestName=tavorgreeting=nice to meet you,那么在SPRING中,在applicationContext.xml(SPRING的配置文

tavor的专栏 1543

spring messagesource 动态指定资源文件

      由于项目是使用的maven模块化的项目,各个模块都分别打包成jar最终被web可部署项目依赖,由于项目中用过了spring messagesource 资源国际化,而messagesource在spring中的配置仅此一份,为了使资源文件可以动态指定,所以对ResourceBundleMessageSource进行了扩展。代码如下: public class GapResourc...

l903659628的博客 796

spring 加载资源文件(转)

spring 加载资源文件 在Spring 中可以使用以下两个类加载资源文件:org.springframework.context.support.ResourceBundleMessageSource和org.springframework.context.support.ReloadableResourceBundleMessageSource &lt;bean id="message...

222

spring资源文件properties的配置

一、通过配置+$ Spring简化了加载资源文件的配置,可以通过&lt;context:property-placeholder去加载,这个元素的写法如下: &lt;context:property-placeholder location="classpath:jdbc.properties"/&gt;   如果想要配置多个properties文件 &lt;context:prop...

靠谱的汉语 157

spring下得到资源文件

操作如下 : spring的bean配置文件: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/s

857

Spring 资源文件 properties 的配置

Spring简化了加载资源文件的配置,可以通过去加载,这个元素的写法如下: context:property-placeholder location="classpath:jdbc.properties"/>   如果想要配置多个properties文件 context:property-placeholder location="classpath:jdbc.prope

技术崛起 895
上一篇: Servlet中request请求
下一篇: Java异常体系和概念
午-夜
博客等级 码龄12年 95粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值