Spring 3.1配置文件和Tomcat配置

Spring 3.1引入了非常有用的功能,称为配置文件 。 因此,它易于构建,可以在所有环境(开发,测试,生产等)中部署的软件包。

通过定义系统属性spring.profiles.active, Spring允许我们使用XML配置或@Profile注释根据活动的概要文件名称创建不同的bean。 众所周知,系统属性可以在Spring XML文件中使用,我们将利用这一点。

在这篇文章中,我将展示如何使用Spring配置文件为所有环境创建一个包,以及如何在Apache Tomcat上运行它。

示例架构

我认为最常见和想要的体系结构是,在开发,测试和生产上部署的应用程序仅在包含配置的已使用属性文件中有所不同时。 WAR包含所有环境的配置,并且在运行时选择了正确的环境。 因此,如果在应用程序资源中包含以下文件,则是最好的:

srcmainresources- config_dev.properties- config_production.properties...

配置Spring属性占位符

为了在Spring中加载属性文件,我们使用<context:property-placeholder />或@PropertySource批注。 在我的示例中,我将遵循XML配置方法来加载属性文件:

<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns='http://www.springframework.org/schema/beans'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:context='http://www.springframework.org/schema/context'xsi:schemaLocation='http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd'><context:property-placeholder location='classpath:config_${spring.profiles.active}.properties' /></beans>

配置Tomcat

现在是时候告诉Tomcat哪个配置文件处于活动状态了。 至少有办法做到这一点:

  • 在web.xml中定义上下文参数 –破坏了“针对所有环境的一个包”的声明。 我不建议那样
  • 定义系统属性-Dspring.profiles.active =您的活动配置文件

我认为定义系统属性是更好的方法。 那么如何为Tomcat定义系统属性呢? 在Internet上,我可以找到很多建议,例如“ modify catalina.sh”,因为您找不到用于执行此类操作的任何配置文件。 修改catalina.sh是一个肮脏的无法维护的解决方案。 有更好的方法可以做到这一点。

只需在Tomcat的bin目录中创建包含以下内容的文件setenv.sh

JAVA_OPTS='$JAVA_OPTS -Dspring.profiles.active=dev'

并且它将在运行catalina.sh启动或运行期间自动加载。


结论

使用Spring概要文件,我们可以创建可以在多个环境中部署的灵活应用程序。 与Maven配置文件方法有何不同? 使用Maven,构建应用程序的人必须定义应该在哪个环境中运行。 通过上述方法,环境决定了其开发,测试还是生产。 因此,我们可以使用完全相同的WAR文件并将其部署到任何地方。

参考: Software Development Journey博客上的JCG合作伙伴 Maciej Walkowiak提供的Spring 3.1配置文件和Tomcat配置 。


翻译自: https://www.javacodegeeks.com/2012/06/spring-31-profiles-and-tomcat.html

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

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

相关文章

计算1~n之间所有奇数之和_所有奇数长度子数组的和

所有奇数长度子数组的和题目&#xff1a;给你一个正整数数组 arr &#xff0c;请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1&#xff1a;输入&#xff1a;arr [1,4,2,5,3]输出&#xff1a…

MYSQL AND OR的联用

MYSQL AND OR的联用 MYSQL中”AND”和”OR”都是条件控制符。”AND”是求交集&#xff0c;而”OR”则是求并集&#xff0c;非常多情况下&#xff0c;须要联用它们两个。下面是两张表,我仅仅列出实用的字段。 Table:student_score 学生成绩 sid(学生ID) cid(课程ID) score(分数)…

九度oj 题目1456:胜利大逃亡

题目描述&#xff1a;Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,I…

JMX:一些入门说明

JMX&#xff08;Java管理扩展&#xff09;是一种J2SE技术&#xff0c;可以管理和监视Java应用程序。 基本思想是实现一组管理对象&#xff0c;并将实现注册到平台服务器&#xff0c;在平台服务器上&#xff0c;可以使用一组连接器或适配器从本地或远程调用这些实现到JVM。 一个…

解释java程序中的异常机制_Java编程中的异常机制

本文旨在以初学者的角度来学习Java异常的知识&#xff0c;尽量简单&#xff0c;一些细枝末节的知识不会讲述&#xff0c;但不影响对知识的掌握。&#xff08;比如try-catch可以嵌套&#xff0c;不太会这么用&#xff09;1.什么是异常我们先举个例子int x 10/0;在IDE里输入这样…

keras做多层神经网络

一、 背景与目的 背景&#xff1a;配置好了theano&#xff0c;弄了gpu&#xff0c; 要学dnn方法。 目的&#xff1a;本篇学习keras基本用法&#xff0c; 学习怎么用keras写mlp&#xff0c;学keras搞文本的基本要点。 二、 准备 工具包&#xff1a; theano、numpy、keras等工具包…

配置环境变量

由于写了一个关于生成签名需要配置环境变量&#xff0c;所以在这里顺便把配置环境变量的步骤说一下 1.右键点击计算机&#xff0c;然后点击高级系统设置 2.点击环境变量&#xff0c;下方出现的即为系统变量&#xff0c;双击path就能直接修改&#xff0c; 转载于:https://www.cn…

使用JavaFX AnimationTimer

回想一下&#xff0c;给AnimationTimer起个名字可能不是一个好主意&#xff0c;因为它不仅可以用于动画&#xff0c;还可以用于测量&#xff1a;fps速率&#xff0c;碰撞检测&#xff0c;模拟步骤&#xff0c;游戏主循环等实际上&#xff0c;大部分时间我都看到了AnimationTime…

python列表姓氏_python数据分析实例(六) 中国姓氏数据

bokeh联动柱状图&#xff0c;Excel空间柱状图、空间热力图&#xff0c;Echarts空间柱状图&#xff0c;常用函数&#xff1a;df[工作地_省] df[工作地].str.split(省).str[0]df[工作地_市] df[工作地_市] df[工作地].str.split(省).str[1].str.split(市).str[0]df[工作地_市][…

JavaFX 2 GameTutorial第3部分

介绍 Ť他是与一个六个部分组成的系列的第3部分的JavaFX 2游戏教程。 如果您错过了第1部分和第2部分 &#xff0c;建议您在开始本教程之前先进行阅读。 回顾第二部分&#xff0c;我讨论了游戏循环的内部工作原理&#xff0c;其中我们使用动画&#xff08;JavaFX Timeline &…

Selenium WebDriver + python 自动化测试框架

目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码&#xff0c;就像写手工测试用例一下&#xff0c;编写excel格式的测试用例&#xff0c;包括步骤、检查点&#xff0c;然后执行自动化工程&#xff0c;即可执行功能自动化测试用例&#xff0c;包…

mysql游戏减少积分活动图_plantuml-绘制状态图和活动图和部署图​

背景状态图&#xff1a;对象的所有状态&#xff0c;以及基于事件发生的状态改变的过程&#xff1b;活动图&#xff1a;用例的工作流程&#xff1b;部署图&#xff1a;系统的软硬件物理体系结构&#xff1b;状态图基本语法元素语法说明开始和结束状态[*]标识开始和结束状态箭头-…

windows中当你的键盘无法使用时我们可以用另一种方法哦

1.使用WinR打开cmd窗口 2.输入osk回车就出现了一个虚拟的小键盘啦&#xff0c;当你的键盘坏掉后非常实用哦 转载于:https://www.cnblogs.com/qianzf/p/6780496.html

python web.py 404_找不到web.py开发服务器-favicon.ico-404

py API文档引用了一个“web.SEE OTHER()”函数&#xff0c;该函数生成一个303 SEE OTHER响应&#xff0c;将浏览器重定向到另一个位置。(请参见http://webpy.org/docs/0.3/api#web.application)这是一个服务器端的解决方案&#xff0c;它不需要在html文件中更改头&#xff1b;如…

NetBeans 7.2引入了TestNG

代码生成的优点之一是能够查看如何使用特定的语言功能或框架。 正如我在《 NetBeans 7.2 beta&#xff1a;更快&#xff0c;更有用》一文中所讨论的那样&#xff0c; NetBeans 7.2 beta提供了TestNG集成 。 除了对该功能的单一引用之外&#xff0c;我在该帖子中没有进一步阐述&…

Javascript模块化编程(三):require.js的用法

一、为什么要用require.js&#xff1f; 最早的时候&#xff0c;所有Javascript代码都写在一个文件里面&#xff0c;只要加载这一个文件就够了。后来&#xff0c;代码越来越多&#xff0c;一个文件不够了&#xff0c;必须分成多个文件&#xff0c;依次加载。下面的网页代码&…

[KISSY5系列]淘宝全终端框架 KISSY 5--从零开始使用

KISSY 是淘宝一个开源的 JavaScript 库&#xff0c;包含的组件有&#xff1a;日历、图片放大镜、卡片切换、弹出窗口、输入建议等 一、简介 KISSY 是一款跨终端、模块化、高性能、使用简单的 JavaScript 框架。 除了完备的工具集合如 DOM、Event、Ajax、Anim 等它还提供了经典的…

几万条数据的excel导入到mysql_【记录】2万多条数据的Excel表格数据导入mysql数据库...

主题刚开始的时候做了两个小方案&#xff01;第一个是直接Excel处理完导入&#xff0c;但是这个导入的话虽然简单出错率很大&#xff01;第二个是想直接用php做个小程序直接导入数据&#xff0c;但是想了想2万条数据处理&#xff0c;百分之百浏览器会一直转&#xff0c;最后不知…

JDeveloper中的Java反编译器

Java Decompiler是一个独立的图形实用程序&#xff0c;显示“ .class”文件的Java源代码。 下面是Java Decompiler程序的快照 您可以从这里下载该程序 我将说明如何将此程序用作Jdeveloper中的外部工具 Java Decompiler和Jdeveloper之间的集成 您可以将此程序添加到Jdevelo…

NGUI学习随笔

一、NGUI的直接用法 1. Attach a Collider&#xff1a;表示为NGUI的某些物体添加碰撞器&#xff0c;如果界面是用NGUI做的&#xff0c;只能这样添加。&#xff08;注&#xff1a;用Component添加无效&#xff09;。2. Attach an Anchor&#xff1a;表示为该物体添加了…