how2java_HOW-TO:在Spring 4和Java 7中使用@PropertySource批注

how2java

今天,我将我当前正在从事的项目之一迁移到了Spring 4.0。 由于它是我用来学习和演示Spring功能的非常简单的Web应用程序,因此只需要更新项目的POM文件并更改Spring版本。 我将项目部署到Tomcat 7服务器,显然该应用程序未启动。 我在IntelliJ控制台中看到此消息: Failed to load bean class: pl.codeleak.t.config.RootConfig; nested exception is org.springframework.core.NestedIOException: Unable to collect imports; nested exception is java.lang.ClassNotFoundException: java.lang.annotation.Repeatable Failed to load bean class: pl.codeleak.t.config.RootConfig; nested exception is org.springframework.core.NestedIOException: Unable to collect imports; nested exception is java.lang.ClassNotFoundException: java.lang.annotation.Repeatable Failed to load bean class: pl.codeleak.t.config.RootConfig; nested exception is org.springframework.core.NestedIOException: Unable to collect imports; nested exception is java.lang.ClassNotFoundException: java.lang.annotation.Repeatable 。 什么……?

java.lang.annotation.Repeatable注释是用于标记您的注释以便在Java 8中多次使用的元注释(但我在项目中使用Java 7)。 例如:

@Repeatable(Schedules.class)
public @interface Schedule { ... }@Schedule(dayOfMonth="last")
@Schedule(dayOfWeek="Fri", hour="23")
public void doPeriodicCleanup() { ... }

此处对此进行了很好的描述: http : //docs.oracle.com/javase/tutorial/java/annotations/repeating.html 。

Spring 4在其@PropertySource批注中利用了此功能。 提醒您,@ PropertySource批注提供了一种将名称/值属性对的源添加到Spring's Environment的机制 ,它与@Configuration类结合使用。 您可能已经知道,我正在自己的配置中使用此功能:

@Configuration
@PropertySource("classpath:/datasource.properties")
public class DefaultDataSourceConfig implements DataSourceConfig {@Autowiredprivate Environment env;@Override@Beanpublic DataSource dataSource() {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName(env.getRequiredProperty("dataSource.driverClassName"));dataSource.setUrl(env.getRequiredProperty("dataSource.url"));dataSource.setUsername(env.getRequiredProperty("dataSource.username"));dataSource.setPassword(env.getRequiredProperty("dataSource.password"));return dataSource;}
}

我首先想到的是,Spring不再与低于8的Java兼容。 不可能。 虽然这样做GitHub上查找我发现了一个全新的@PropertySources注释,是一个容器@PropertySource注解。 那就是我针对Java兼容性问题的解决方案:在我的配置类上使用@PropertySources注释,如下所示:

@Configuration
@PropertySources(value = {@PropertySource("classpath:/datasource.properties")})
public class DefaultDataSourceConfig implements DataSourceConfig {@Autowiredprivate Environment env;}

就是这样! 进行此更改后,我的应用程序开始运行,并且可以正常运行!

编辑 :请参阅: https : //jira.springsource.org/browse/SPR-11086

参考:操作方法:在Springle 4中,我们的JCG合作伙伴 Rafal Borowiec的@PropertySource注释与Java 7一起在Codeleak.pl博客上使用。

翻译自: https://www.javacodegeeks.com/2013/11/how-to-using-propertysource-annotation-in-spring-4-with-java-7.html

how2java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握java_如何才算掌握Java,大家都掌握到什么程度

如何才算掌握Java SEjava SE基础课程在朗沃算是学完了,但真正的掌握了么?如何才算掌握了呢?目前已经进入了JavaWEB阶段的项目阶段,把这个问题提出来,是很好的一个时间,那么有没有一些参照觉得学Java基础部分…

IBM将收购Red Hat:面向Java的初衷

甲骨文公司近九年前完成了收购Sun Microsystems的过程。 那是当时的大新闻,今天也宣布了类似的大新闻: IBM和Red Hat已同意IBM收购Red Hat 。 IBM主页面宣布“ IBM收购Red Hat”。 然后它说:“这将改变一切。” 这项宣布的收购很可能会使许多…

java 多线程 总结_Java 多线程总结

昨天熬了个通宵,看了一晚上的视频,把java 的多线程相关技术重新复习了一遍,下面对学习过程中遇到的知识点进行下总结。首先我们先来了解一下进程、线程、并发执行的概念:进程是指:一个内存中运行的应用程序&#xff0c…

python存文件的模块_python模块之StringIO/cStringIO(内存文件)

1. StringIO/cStringIO是什么这个模块提供了一个类,这个类的实例就像是一个文件一样可以读写,实际上读写的是一个字符串缓存,也可以称之为内存文件。StringIO和文件对象拥有共同的父类IOBase,因此方法基本上都是一致的&#xff0c…

性能测试脚本的编写和调试_编写自动调试器以在测试执行期间捕获异常

性能测试脚本的编写和调试以前,我曾说过, 您总是想保留一些调试器断点作为例外 。 这有助于防止代码在不注意的情况下腐烂掉,有时掩盖了另一个问题。 如果您认真对待这一点,那么最好将此想法扩展到自动化测试中。 但是想出一个全…

python自由职业可以做什么_我想成为自由职业者,但不知道做什么?

我想成为自由职业者,但不知道做什么?这其实是就是个人定位的问题,自由职业的第一步,就得先解决这个问题。下面我从3个维度,通过5个步骤,说一下如何成为一名自由职业者,你看完就知道马上该怎么去…

基本服务-使用大使网关

这是我对Knative服务进行实验的延续,这次是围绕在Knative服务应用程序之上构建网关。 这是基于我之前的两篇文章- 使用Knative部署Spring Boot App以及在Knative中进行服务到服务的调用 。 为什么在Knative应用程序之上使用网关 为了解释这一点,让我谈谈…

mysql function 表名作为参数_mysql 常用的分组聚合函数

mysql 常用的分组聚合函数1.聚合运算一般情况下,需要的聚合数据(和,平均值,最大,最小等)并不总是存储在表中,但是可以执行存储数据的计算来获取它.根据定义,聚合函数对一组值执行计算并返回单个值.MySQL提供了许多聚合函数,包括AVG,COUNT,SUM,MIN,MAX等.除COUNT函数外,其它聚合…

java加减乘除运算顺序_java 实现加减乘除混合运算

初衷:解决小学一年级到四年级 基本加减乘除混合运算基本思路:表达式:10032-200(10000/5(100/2))此类表达式我们称之为中缀表达式(运算符在数字的中间),如果我们稍加转换,转化为100, 3, , 2, , 200, -, 10000, 5, /, 100, 2, /, , …

java integer valueof_对 Java Integer.valueOf() 的一些了解

从一道选择题开始分析选项A选项A中比较的是i01和i02,Integer i0159这里涉及到自动装箱过程,59是整型常量,经包装使其产生一个引用并存在栈中指向这个整型常量所占的内存,这时i01就是Integer 的引用。而int i0259由于int是基本类型…

python统计文件大小_python工具--01.统计当前目录下的文件的大小

环境os: centos7python : 3.7实现功能统计当目录下的文件夹有文件的大小,单位KB/MB/B;代码实现#!/usr/bin/env python# _*_ coding:utf-8 _*_import os,mathsummary0def size_file(str2):global summarysummarysummaryos.path.getsize(str2)def size_dir…

java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态

大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp、*.php页面。但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态——就是将*.jsp、*.php这种动态URL伪装成静态的HTML页面。…

idea创建maven程序_使用Maven程序集创建漏洞评估工件

idea创建maven程序本文将讨论如何使用Maven程序集创建可提供给第三方漏洞评估站点(例如Veracode )进行审查的工件。 错误的静态分析与漏洞评估 在这一点上,每个人都知道findbug并认真使用它,对吗? 对? F…

python装饰器的顺序_python中多个装饰器的执行顺序详解

装饰器是程序开发中经常会用到的一个功能,也是python语言开发的基础知识,如果能够在程序中合理的使用装饰器,不仅可以提高开发效率,而且可以让写的代码看上去显的高大上^_^使用场景可以用到装饰器的地方有很多,简单的举…

使用Spring WebFlux从Corda节点流式传输数据

自上次发布以来已经有一段时间了,但我终于回来了! 由于我仍在我的项目中,因此我将再次撰写有关使用Corda的文章。 这次,我们将不再关注Corda,而是将Spring与Corda结合使用。 更具体地说,Spring WebFlux。 为…

mysql 批量加索引_mysql优化:按期删数据 + 批量insert + 字符串加索引为何很傻

嗯,犯了一个很低级的错误,最近暴露出来了。html背景:mysql1. 内部平台,接口间断性无返回,查询日志注意到失败时,接口耗时达到4000(正常状态:100ms)git2. 增长日志打点,在关键步骤插入…

python王者归来 pdf_OpenStack开源云:王者归来 PDF 下载

资料目录:第1篇 基 础 篇第1章 OpenStack概述1.1 云计算简介1.1.1 什么是云计算1.1.2 什么是云存储1.1.3 私有云与公有云1.2 为什么使用云计算1.2.1 方案1:简单的服务部署1.2.2 方案2:分布式服务部署1.2.3 方案3:基于虚拟化的服务…

MySQL中引入存储引擎意义是_mysql学习九:存储引擎、存储过程和函数的引入

存储引擎:存储引擎是mysql特有的,共有7种,常用的有myisam、memory、innodb查看表的存储引擎:show create table 表名;修改表的存储引擎:alter table 表名 engine存储引擎名称;1.myisam存储引擎:可转换为压缩…

廖雪峰讲python高阶函数求导公式_一文读懂Python 高阶函数

高阶函数将函数作为参数传入,这样的函数称为高阶函数。函数式编程就是指这种高度抽象的编程范式。变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。如下所示&#xf…