0 0

初学spring中遇到的问题关于components.properties配置文件的问题10

本人自学spring阅读 spring攻略(GaryMak著) 其中第一个例子程序中发现一个问题,大家一起参考一下

内部使用.properties配置文件来模拟spring的xml文件
源代码为
# Define a new component "reportGenerator"
reportGenerator=com.apress.springrecipes.report.PdfReportGenerator

# Define a new component "reportService"
reportService=com.apress.springrecipes.report.ReportService
# Inject the component "reportGenerator" into property "reportGenerator"
reportService.reportGenerator=reportGenerator

 

 

主要运行类源代码为

package com.apress.springrecipes.report;

public class Main {

    public static void main(String[] args) {
        Container container = new Container();
        ReportService reportService =
            (ReportService) container.getComponent("reportService");
        reportService.generateAnnualReport(2007);
    }
}

 

以上其中三处红色部位改为一致,便可保证程序运行

 

首先改成“reportServiceq” 程序可以运行 然后换成“reportServicew

发现程序出现错误

 

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: No bean specified
 at com.apress.springrecipes.report.Container.<init>(Container.java:26)
 at com.apress.springrecipes.report.Main.main(Main.java:6)
Caused by: java.lang.IllegalArgumentException: No bean specified
 at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1921)
 at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:2064)
 at org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:858)
 at com.apress.springrecipes.report.Container.processEntry(Container.java:41)
 at com.apress.springrecipes.report.Container.<init>(Container.java:23)
 ... 1 more

 

通过调试发现 在程序读取配置文件内容时

reportServicew=com.apress.springrecipes.report.ReportService
这一行没有读出 直接运行下一步了

 

不知道是不是有bug出现

 

此外发现 将红色字改为“reportServi”也可让程序运行成功

 

希望大家一起参谋参谋

 

 

 
2012年7月21日 21:18

2个答案 按时间排序 按投票排序

0 0

Properties这个类不会按你定义在properties配置文件中的顺序来加载的。
这是关键。一边遍历一边实例化,会出问题的。

2012年7月21日 22:37
0 0

不是BUG是你的程序写的有些问题。

 processEntry(key, value);

这个地方,你是在获取配置文件时就想初始化类的实例的属性,可是当你加载到
reportServicew.reportGenerator这个key的时候reportServicew这个key并没有在你的components变量中。
Properties这个类会按你定义在properties配置文件中的顺序来加载。

建议解释配置文件放在第一步,只考虑他们之前的对应关系。
把实例化放在第二步来做。

不管怎么处理,你要保证你的components包含了你所有的KEY及Value.

} else {
      Object component = components.get(parts[0]);


parts[0]这时是reportServicew 可是这时components里还有没这个key呢。不知道我说的明白不?

2012年7月21日 22:26

相关推荐

    基于ssm+vue师生健康管理系统.zip

    - `src/main/resources`: 配置文件如application.properties或application.yml,数据库连接配置、MyBatis的配置文件等。 2. **前端**: - `static`: 存放静态资源,如CSS样式表、JavaScript文件、图片等。 - `...

    最新新冠疫苗预约小程序.zip

    3. **数据库配置**:如果项目涉及数据库操作,可能会有一个配置文件(如`db.properties`或在Spring配置中),包含数据库连接信息。 4. **图片和其他静态资源**:在`static`或`res`文件夹中,可能包含图标、背景图和...

    SpringBoot+Vue前后端分离外卖点单系统.zip

    1. **后端**:包括SpringBoot相关的配置文件(如application.properties)、Controller、Service、Repository等层的Java源代码,以及可能的Dockerfile、pom.xml(Maven项目配置)等。 2. **前端**:Vue.js的项目文件...

    从0开始手把手教学实现SpringBoot+Vue前后端分离后台管理系统

    - `src/main/resources`: 存放应用的配置文件,如application.properties或yaml,数据库连接配置等。 - `src/main/webapp`: Spring Boot的静态资源目录,包含Vue.js的前端代码,如HTML、CSS、JavaScript等。 - `src/...

    最新基于web的学生考勤管理系统+vue.zip

    2. **后端**:后端代码可能包含Spring Boot或Spring MVC的配置文件,如`application.properties`,以及服务接口(services)、实体模型(models)、控制器(controllers)和DAO(数据访问对象)等,负责处理HTTP请求...

    基于SpringBoot+Vue 的智能热度分析和自媒体推送平台设计软件源码.rar

    - 后端:SpringBoot相关的Java代码,包括Controller、Service、Repository等层的实现,以及配置文件(application.properties或.yml)。 - 前端:Vue.js的项目结构,包括src目录下的components、views、router等,...

    springboot+vue前后端分离开发项目源码

    2. **前端**:Vue应用,包括入口文件(main.js)、路由配置(router.js)、状态管理(store.js)、组件(Components)、页面(Pages)以及样式文件(CSS/SCSS)。 3. **配置**:数据库连接配置(如application....

    课程设计,宾馆客房预订系统,使用Vue+SpringBoot+MySQL.zip

    `application.properties`或`application.yml`是配置文件,设置数据库连接等信息。 3. **数据库**:MySQL中的表结构可能包括`users`(用户信息)、`rooms`(房间信息)、`bookings`(预订记录)等,使用SQL语句进行...

    基于ssm+vue的微博网站.zip

    - **配置文件**:如`application.properties`(Spring Boot的配置文件),数据库连接信息、服务器设置等。 - **部署相关**:可能包含启动脚本、Dockerfile(如果使用Docker进行部署)或其他部署说明。 - **测试**:...

    基于Vue和SpringBoot的OA管理系统源码+数据库(毕业设计).zip

    其中可能包含服务层(Service)、控制器层(Controller)、实体类(Entity)、配置文件(application.properties或application.yml)以及其他辅助类。 6. **front**:此目录应为前端代码,包含Vue项目的源代码。...

    MF00636-VueSpringBoot进销存源码.zip

    4. **配置文件**:如`application.properties`或`application.yml`,定义SpringBoot应用的配置项。 5. **测试代码**:`src/test`目录下的JUnit测试用例,用于验证功能正确性。 6. **文档**:可能包括README文件,...

    基于SpringBoot 和 Vue3 开发的博客系统源码,适合新手学习,二次开发,课程设计和毕业设计等.zip

    2. `src/main/resources`:资源目录,包括配置文件(如application.properties或yaml),静态资源(如CSS、JS、图片)和模板文件(如Thymeleaf或Freemarker)。 3. `pom.xml`:Maven项目配置文件,定义依赖管理和...

    SpringBoot+Vue后台管理系统脚手架.zip

    这个目录下的文件结构一般会包括SpringBoot的主配置文件(如`application.properties`或`application.yml`)、Vue的源码文件夹(如`src`,内含`components`、`views`、`router`等)、以及构建和打包配置文件(如`...

    图书管理系统,前端用的vue,后端用的springboot.zip

    压缩包内的文件可能包括以下内容:Vue.js的源码文件(如`.vue`)、SpringBoot的Java源码(`.java`)、配置文件(如`application.properties`)、数据库脚本(`.sql`)、构建和部署相关的文件(如`pom.xml`、`package...

    基于Speingboot+vue+mysql的校园宿舍管理系统设计与实现(源码).zip

    4. **配置文件**:包括Springboot的application.properties或application.yml,以及Vue的vue.config.js等,用于配置应用的运行环境和参数。 5. **测试文件**:为了确保代码质量,可能包含单元测试和集成测试。 6. ...

    SpringBoot+Vue搭建的旅游项目.zip

    - `src/main/resources`: 这里存放配置文件,如`application.properties`或`application.yml`,用于配置SpringBoot的环境变量,数据库连接信息等。 - `src/main/webapp`: 如果项目使用Thymeleaf或JSP,这里会包含...

    基于SpringBoot+Vue搭建的多功能体育场地智能管理系统.zip

    2. `src/main/resources`: 存放配置文件,如application.properties或yaml,用于设置SpringBoot的各种配置。 3. `src/main/webapp`: 前端Vue.js代码可能放置于此,包括组件(components)、路由(router)、状态管理...

    springboot基于B2C模式的电子商务平台(vue)源码数据库演示.zip

    4. **配置**:可能是环境配置文件,如application.properties或application.yml,用于设置SpringBoot应用的运行参数。 通过学习这个项目,开发者可以了解到: - 如何使用SpringBoot构建RESTful API,处理HTTP请求...

    一个基于Vue+SpringBoot的个人博客项目。.zip

    而SpringBoot是Java领域的微服务开发框架,简化了Spring应用的初始搭建以及开发过程,提供了大量的默认配置,使得开发者能快速构建可生产的应用。 项目源码包含两个主要部分:前端Vue项目和后端SpringBoot项目。...

    springboot-vue-sample-master.zip_VUE+SPRINGBOOT_Z2HK_aklj_low9ml

    1. **配置文件**:`application.properties`或`application.yml`,用于设置应用的基本属性和环境变量。 2. **启动类**:包含`@SpringBootApplication`注解的Java类,用于启动SpringBoot应用。 3. **Web层**:使用`@...

Global site tag (gtag.js) - Google Analytics