-
初学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个答案 按时间排序 按投票排序
-
不是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
相关推荐
- `src/main/resources`: 配置文件如application.properties或application.yml,数据库连接配置、MyBatis的配置文件等。 2. **前端**: - `static`: 存放静态资源,如CSS样式表、JavaScript文件、图片等。 - `...
3. **数据库配置**:如果项目涉及数据库操作,可能会有一个配置文件(如`db.properties`或在Spring配置中),包含数据库连接信息。 4. **图片和其他静态资源**:在`static`或`res`文件夹中,可能包含图标、背景图和...
1. **后端**:包括SpringBoot相关的配置文件(如application.properties)、Controller、Service、Repository等层的Java源代码,以及可能的Dockerfile、pom.xml(Maven项目配置)等。 2. **前端**:Vue.js的项目文件...
- `src/main/resources`: 存放应用的配置文件,如application.properties或yaml,数据库连接配置等。 - `src/main/webapp`: Spring Boot的静态资源目录,包含Vue.js的前端代码,如HTML、CSS、JavaScript等。 - `src/...
2. **后端**:后端代码可能包含Spring Boot或Spring MVC的配置文件,如`application.properties`,以及服务接口(services)、实体模型(models)、控制器(controllers)和DAO(数据访问对象)等,负责处理HTTP请求...
- 后端:SpringBoot相关的Java代码,包括Controller、Service、Repository等层的实现,以及配置文件(application.properties或.yml)。 - 前端:Vue.js的项目结构,包括src目录下的components、views、router等,...
2. **前端**:Vue应用,包括入口文件(main.js)、路由配置(router.js)、状态管理(store.js)、组件(Components)、页面(Pages)以及样式文件(CSS/SCSS)。 3. **配置**:数据库连接配置(如application....
`application.properties`或`application.yml`是配置文件,设置数据库连接等信息。 3. **数据库**:MySQL中的表结构可能包括`users`(用户信息)、`rooms`(房间信息)、`bookings`(预订记录)等,使用SQL语句进行...
- **配置文件**:如`application.properties`(Spring Boot的配置文件),数据库连接信息、服务器设置等。 - **部署相关**:可能包含启动脚本、Dockerfile(如果使用Docker进行部署)或其他部署说明。 - **测试**:...
其中可能包含服务层(Service)、控制器层(Controller)、实体类(Entity)、配置文件(application.properties或application.yml)以及其他辅助类。 6. **front**:此目录应为前端代码,包含Vue项目的源代码。...
4. **配置文件**:如`application.properties`或`application.yml`,定义SpringBoot应用的配置项。 5. **测试代码**:`src/test`目录下的JUnit测试用例,用于验证功能正确性。 6. **文档**:可能包括README文件,...
2. `src/main/resources`:资源目录,包括配置文件(如application.properties或yaml),静态资源(如CSS、JS、图片)和模板文件(如Thymeleaf或Freemarker)。 3. `pom.xml`:Maven项目配置文件,定义依赖管理和...
这个目录下的文件结构一般会包括SpringBoot的主配置文件(如`application.properties`或`application.yml`)、Vue的源码文件夹(如`src`,内含`components`、`views`、`router`等)、以及构建和打包配置文件(如`...
压缩包内的文件可能包括以下内容:Vue.js的源码文件(如`.vue`)、SpringBoot的Java源码(`.java`)、配置文件(如`application.properties`)、数据库脚本(`.sql`)、构建和部署相关的文件(如`pom.xml`、`package...
4. **配置文件**:包括Springboot的application.properties或application.yml,以及Vue的vue.config.js等,用于配置应用的运行环境和参数。 5. **测试文件**:为了确保代码质量,可能包含单元测试和集成测试。 6. ...
- `src/main/resources`: 这里存放配置文件,如`application.properties`或`application.yml`,用于配置SpringBoot的环境变量,数据库连接信息等。 - `src/main/webapp`: 如果项目使用Thymeleaf或JSP,这里会包含...
2. `src/main/resources`: 存放配置文件,如application.properties或yaml,用于设置SpringBoot的各种配置。 3. `src/main/webapp`: 前端Vue.js代码可能放置于此,包括组件(components)、路由(router)、状态管理...
4. **配置**:可能是环境配置文件,如application.properties或application.yml,用于设置SpringBoot应用的运行参数。 通过学习这个项目,开发者可以了解到: - 如何使用SpringBoot构建RESTful API,处理HTTP请求...
而SpringBoot是Java领域的微服务开发框架,简化了Spring应用的初始搭建以及开发过程,提供了大量的默认配置,使得开发者能快速构建可生产的应用。 项目源码包含两个主要部分:前端Vue项目和后端SpringBoot项目。...
1. **配置文件**:`application.properties`或`application.yml`,用于设置应用的基本属性和环境变量。 2. **启动类**:包含`@SpringBootApplication`注解的Java类,用于启动SpringBoot应用。 3. **Web层**:使用`@...