SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean

简介:     分类: 【java】2013-12-09 16:29 1020人阅读 评论(0) 收藏 举报 1.简介 在SSH框架下,假设我们将配置文件放在项目的src/datasource.properties路径下,Spring的配置文件也是src/applicationContext.xml路径下,那么我们可以借助Spring的property-placeholder读取配置文件,然后注入Bean中。
 

 

分类: 【java】

1.简介

在SSH框架下,假设我们将配置文件放在项目的src/datasource.properties路径下,Spring的配置文件也是src/applicationContext.xml路径下,那么我们可以借助Spring的property-placeholder读取配置文件,然后注入Bean中。我们在程序中,可以根据Bean的Id,获取注入的值。这样我们就可以借助Spring来读取配置文件。

2.Code

2.1Student.java

 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. package edu.njupt.zhb.model.mysql;  
  2.   
  3.   
  4.   
  5. /** 
  6.  * Student entity. @author MyEclipse Persistence Tools 
  7.  */  
  8.   
  9. public class Student  implements java.io.Serializable {  
  10.   
  11.   
  12.     // Fields      
  13.   
  14.      private String id;  
  15.      private String name;  
  16.      private String course;  
  17.      private Integer score;  
  18.      private String remarks;  
  19.   
  20.   
  21.     // Constructors  
  22.   
  23.     /** default constructor */  
  24.     public Student() {  
  25.     }  
  26.   
  27.     /** minimal constructor */  
  28.     public Student(String name, String course, Integer score) {  
  29.         this.name = name;  
  30.         this.course = course;  
  31.         this.score = score;  
  32.     }  
  33.       
  34.     /** full constructor */  
  35.     public Student(String name, String course, Integer score, String remarks) {  
  36.         this.name = name;  
  37.         this.course = course;  
  38.         this.score = score;  
  39.         this.remarks = remarks;  
  40.     }  
  41.   
  42.      
  43.     // Property accessors  
  44.   
  45.     public String getId() {  
  46.         return this.id;  
  47.     }  
  48.       
  49.     public void setId(String id) {  
  50.         this.id = id;  
  51.     }  
  52.   
  53.     public String getName() {  
  54.         return this.name;  
  55.     }  
  56.       
  57.     public void setName(String name) {  
  58.         this.name = name;  
  59.     }  
  60.   
  61.     public String getCourse() {  
  62.         return this.course;  
  63.     }  
  64.       
  65.     public void setCourse(String course) {  
  66.         this.course = course;  
  67.     }  
  68.   
  69.     public Integer getScore() {  
  70.         return this.score;  
  71.     }  
  72.       
  73.     public void setScore(Integer score) {  
  74.         this.score = score;  
  75.     }  
  76.   
  77.     public String getRemarks() {  
  78.         return this.remarks;  
  79.     }  
  80.       
  81.     public void setRemarks(String remarks) {  
  82.         this.remarks = remarks;  
  83.     }  
  84. }  

2.2datasource.properties中的配置

 

 

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. #student config  
  2. student.name=Haibo  
  3. student.id=1012010638  
  4. student.course=Java  
  5. student.score=90  
  6. student.remarks=Come from Properties  

2.3Spring配置文件applicationContext.xml部分配置

 

 

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. <!-- 引入datasource配置文件 -->  
  2.     <context:property-placeholder location="classpath:datasource.properties" />  
  3.     <bean id="student" class="edu.njupt.zhb.model.mysql.Student">  
  4.         <property name="id" value="${student.id}" />  
  5.         <property name="name" value="${student.name}" />  
  6.         <property name="course" value="${student.course}" />  
  7.         <property name="score" value="${student.score}" />  
  8.         <property name="remarks" value="${student.remarks}" />  
  9.     </bean>  

2.4读取Spring中的Bean函数

 

 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. /* 
  2.  * $filename: BeanUtils.java,v $ 
  3.  * $Date: 2013-12-9  $ 
  4.  * Copyright (C) ZhengHaibo, Inc. All rights reserved. 
  5.  * This software is Made by Zhenghaibo. 
  6.  */  
  7. package edu.njupt.zhb.tools;  
  8.   
  9. import org.apache.struts2.ServletActionContext;  
  10. import org.springframework.context.ApplicationContext;  
  11. import org.springframework.context.support.FileSystemXmlApplicationContext;  
  12.   
  13. /* 
  14.  *@author: ZhengHaibo   
  15.  *web:     http://blog.csdn.net/nuptboyzhb 
  16.  *mail:    zhb931706659@126.com 
  17.  *2013-12-9  Nanjing,njupt,China 
  18.  */  
  19. public class BeanUtils {  
  20.     /** 
  21.      * 获取Spring中注入的Bean 
  22.      * @param beanId:id 
  23.      * @return 
  24.      */  
  25.     public static Object getSpringBean(String beanId){  
  26.         //Spring配置文件的路径  
  27.         String xmlRealPath = ServletActionContext.getServletContext().getRealPath("/WEB-INF/classes/applicationContext.xml");  
  28.         ApplicationContext ac = new FileSystemXmlApplicationContext(xmlRealPath);  
  29.         return ac.getBean(beanId);  
  30.     }  
  31. }  

2.5我们可以通过如下方式,获得Spring注入的值

 

 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. Student stu = (Student)BeanUtils.getSpringBean("student");  

2.6用JSONObject工具打印一下stu对象的值

 

 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. System.out.println(JSONObject.fromObject(stu).toString());  

2.7运行结果为:

 

 

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. {"course":"Java","id":"1012010638","name":"Haibo","remarks":"Come from Properties","score":90}  

 

未经允许不得用于商业目的
目录
相关文章
|
2月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
111 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
2月前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
105 3
|
2月前
|
Java 测试技术 程序员
为什么Spring不推荐@Autowired用于字段注入?
作为Java程序员,Spring框架在日常开发中使用频繁,其依赖注入机制带来了极大的便利。然而,尽管@Autowired注解简化了依赖注入,Spring官方却不推荐在字段上使用它。本文将探讨字段注入的现状及其存在的问题,如难以进行单元测试、违反单一职责原则及易引发NPE等,并介绍为何Spring推荐构造器注入,包括增强代码可读性和维护性、方便单元测试以及避免NPE等问题。通过示例代码展示如何将字段注入重构为构造器注入,提高代码质量。
104 1
|
2月前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
29天前
|
网络安全 Windows
备份SSH配置文件
备份SSH配置文件
|
29天前
|
网络安全 Windows
查看SSH配置文件
查看SSH配置文件
|
2月前
|
Java 数据库连接 数据库
让星星⭐月亮告诉你,SSH框架01、Spring概述
Spring是一个轻量级的Java开发框架,旨在简化企业级应用开发。它通过IoC(控制反转)和DI(依赖注入)降低组件间的耦合度,支持AOP(面向切面编程),简化事务管理和数据库操作,并能与多种第三方框架无缝集成,提供灵活的Web层支持,是开发高性能应用的理想选择。
39 1
|
2月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
98 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
2月前
|
缓存 Java Spring
源码解读:Spring如何解决构造器注入的循环依赖?
本文详细探讨了Spring框架中的循环依赖问题,包括构造器注入和字段注入两种情况,并重点分析了构造器注入循环依赖的解决方案。文章通过具体示例展示了循环依赖的错误信息及常见场景,提出了三种解决方法:重构代码、使用字段依赖注入以及使用`@Lazy`注解。其中,`@Lazy`注解通过延迟初始化和动态代理机制有效解决了循环依赖问题。作者建议优先使用`@Lazy`注解,并提供了详细的源码解析和调试截图,帮助读者深入理解其实现机制。
57 1
|
3月前
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。