具有代理设置的Spring Cloud AWS

在我的上一篇文章Spring和Amazon Web Services中 ,我简要介绍了Spring Cloud AWS模块以及开发人员现在对它的期望。 从官方文档中看不出来的一件事是,当您的Internet连接受到代理服务器的限制时,如何使用此模块。 在本文中,我将概述如何为基于Java和基于XML的配置传递代理配置。 在将来的发行版中可能会解决此配置方面的问题,但是如果您使用此模块并需要您的应用程序与公司代理一起工作,它现在可能会对您有所帮助。

Spring Cloud AWS代理配置

Java配置

让我们从更流行的配置Spring应用程序的方式开始-Java配置。 在这种情况下,事情相对简单,因为您可以自己在代码中手动提供所需的代理配置。 考虑以下声明两个bean的配置类-S3客户端和代理配置(如果未从属性文件/属性解析这些设置,则将使用默认的无代理连接)。

来自ApplicationConfiguration类的S3客户端配置示例

@Configuration
@EnableContextInstanceData
public final class ApplicationConfiguration {@Value("${proxy.host}")private String proxyHost;@Value("${proxy.port}")private int proxyPort;@Value("${proxy.username}")private String proxyUsername;@Value("${proxy.password}")private String proxyPassword;@Beanpublic AmazonS3Client amazonS3Client() {return new AmazonS3Client(clientConfiguration());}@Beanpublic ClientConfiguration clientConfiguration() {final ClientConfiguration clientConfiguration = new ClientConfiguration();clientConfiguration.setProxyHost(proxyHost);clientConfiguration.setProxyPort(proxyPort);clientConfiguration.setProxyUsername(proxyUsername);clientConfiguration.setProxyPassword(proxyPassword);return clientConfiguration;}
}

考虑到此类代码的含义,请考虑使用用于在开发人员计算机上运行应用程序的配置文件标记此类,例如@Profile("local")

XML配置

在使用XML配置进行代理配置时,需要一定程度的Spring配置知识。 为了使此简单的配置AmazonS3Client ,我们需要使用存储在客户端配置Bean中的代理设置创建AmazonS3Client实例。 以下XML文件显示了整个配置,因此让我们将其分为几个部分。

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aws-context="http://www.springframework.org/schema/cloud/aws/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/cloud/aws/context http://www.springframework.org/schema/cloud/aws/context/spring-cloud-aws-context.xsd"><context:component-scan base-package="com.jakubstas.s3downloader"/><!-- Bunch of simple configuration switches allowing access to instance metadata, integration of S3into ResourceLoader and region auto detection. Some of these are not essential for the examplehowever it is always nice to have the information they provide at hand when needed. --><aws-context:context-instance-data/><aws-context:context-resource-loader/><aws-context:context-region auto-detect="true"/><!-- Configuration of Amazons credentials provider chain to allow execution on developers machineas well as in the Beanstalk environment. --><aws-context:context-credentials><aws-context:instance-profile-credentials/><aws-context:simple-credentials access-key="#{systemProperties['AWS_ACCESS_KEY_ID']}" key="#{systemProperties['AWS_SECRET_KEY']}"/></aws-context:context-credentials><!-- Bean with client configuration with passed proxy settings (if these settings are not resolvedfrom property files / properties default no-proxy connection will be used) --><!-- The client instance created by hand with proxy configuration --><bean id="amazonS3" class="com.amazonaws.services.s3.AmazonS3Client" autowire-candidate="true" autowire="constructor"/><!-- Proxy configuration for any AWS related client code - currently used for S3 (but might as well be used for DynamoDB access, ...) --><bean id="clientConfiguration" class="com.amazonaws.ClientConfiguration"><property name="proxyHost" value="${proxy.host}"/><property name="proxyPort" value="${proxy.port}"/><property name="proxyUsername" value="${proxy.username}"/><property name="proxyPassword" value="${proxy.password}"/></bean>
</beans>

考虑到此类代码的含义,请考虑使用用于在开发人员机器上运行应用程序的配置文件标记这些bean,例如profile="local"

超越S3

到目前为止,该示例几乎仅限于S3。 但是,由于Amazon SDK的设计方式,可以在任何适用的情况下使用此配置。 让我们看一下DynomoDB客户端的示例。 各种Amazon AWS服务的多个客户端可以利用上述方法。

来自ApplicationConfiguration类的DynamoDB客户端配置示例

@Configuration
@EnableContextInstanceData
public final class ApplicationConfiguration {@Value("${proxy.host}")private String proxyHost;@Value("${proxy.port}")private int proxyPort;@Value("${proxy.username}")private String proxyUsername;@Value("${proxy.password}")private String proxyPassword;@Beanpublic AmazonS3 amazonS3Client() {return new AmazonS3Client(clientConfiguration());}@Beanpublic AmazonDynamoDBClient amazonDynamoDBClient() {return new AmazonDynamoDBClient(clientConfiguration());}@Beanpublic ClientConfiguration clientConfiguration() {final ClientConfiguration clientConfiguration = new ClientConfiguration();clientConfiguration.setProxyHost(proxyHost);clientConfiguration.setProxyPort(proxyPort);clientConfiguration.setProxyUsername(proxyUsername);clientConfiguration.setProxyPassword(proxyPassword);return clientConfiguration;}
}

结论

将应用程序配置传递给您的bean是非常标准的任务,不会对有经验的Spring开发人员造成很多麻烦。 但是,鉴于开发人员的经验水平和日常生活水平各不相同,这可能会引起麻烦。 这就是为什么我鼓励任何人自己尝试这些示例的原因,因为此处建模的情况使用了Spring配置设计的基本方法之一。 继续练习并保持该公司代理人身份。 :)

翻译自: https://www.javacodegeeks.com/2016/01/spring-cloud-aws-proxy-settings.html

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

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

相关文章

mysql两者之间_Django和MySQL - 两者之间的数据是不同的

我有一个使用MySQL作为后端的Django应用程序。我在原始MySQL记录显示一个值时遇到困难&#xff0c;但Django在Web应用程序中提供了其他内容。例如&#xff0c;我有一个客户端数据表。每条记录中的一个字段称为snailMailInvoice并且是Y / N选项 - 默认值是Y(varchar类型)。-----…

hdoj 4272 LianLianKan 数据太水

点击打开链接 题意&#xff1a; 给出一个序列&#xff0c;其中距离不超过6的两个相同的数字可以消除掉&#xff08;从上往下消&#xff0c;输入是从底向上的&#xff09;&#xff0c;问能不能全部消除。 思路&#xff1a; 状压dp http://www.cnblogs.com/swm8023/archive/2012/…

mysql 两个查询结果合并去重_《MySQL 入门教程》第 21 篇 集合操作符

文章来源&#xff1a;https://blog.csdn.net/horses/article/details/108174837来源平台&#xff1a;CSDN原文作者&#xff1a;不剪发的Tony老师数据表与集合理论中的集合非常类似&#xff0c;表是由行组成的集合。SQL 标准定义了基于行的各种集合操作&#xff1a;并集运算(UNI…

binutils工具集之---ar

1.如果要将多个.o文件生成一个库文件&#xff0c;则存在两种类型的库&#xff0c;一种是静态库&#xff0c;在linux里面后缀是.a&#xff0c;另一种是动态库&#xff0c;后缀为.so。 当可执行程序要与静态库进行链接时&#xff0c;所用到的库中的函数和数据会被拷贝到最终的可执…

jax-rs jax-ws_Google App Engine JAX-RS REST服务

jax-rs jax-ws在本文中&#xff0c;您将学习如何使用JAX-RS参考实现&#xff08;Jersey&#xff09;创建REST服务并将其部署在Google AppEngine上。 先决条件 对于本教程&#xff0c;您将需要&#xff1a; 一个Google AppEngine帐户 Eclipse Galileo&#xff08;3.5.x&#xf…

mysql锁与性能_MySQL性能优化--锁(概念)

《 MySQL性能优化&#xff0d;&#xff0d;锁》首发牧码人博客转发请加此提示MySQL基本概念&#xff0d;&#xff0d;锁介绍下对于MySQL锁机制的理解从基本概念开始&#xff1a;共享锁共享锁的代号是S&#xff0c;是Share的缩写&#xff0c;共享锁的锁粒度是行或者元组(多个行)…

[转]使用C#开发ActiveX控件

前言 ActiveX控件以前也叫做OLE控件&#xff0c;它是微软IE支持的一种软件组件或对象&#xff0c;可以将其插入到Web页面中&#xff0c;实现在浏览器端执行动态程序功能&#xff0c;以增强浏览器端的动态处理能力。通常ActiveX控件都是用C或VB语言开发&#xff0c;本文介绍另一…

用Java测试多线程代码

测试多线程代码是一个艰巨的挑战。 尝试测试并发性时获得的第一个建议是尽可能地在代码中隔离并发问题。 这是一般的设计建议&#xff0c;但在这种情况下甚至更重要。 确保首先正确地对并发构造所包装的逻辑进行单元测试。 否则&#xff0c;您可能会花费很长时间尝试找出一个并…

php pdo mysql query_PHP+MYSQL中使用PDO的query方法

一 代码class"php">PDO连接MySQL数据库IDPDO数据库时间$dbmsmysql; //数据库类型 ,对于开发者来说&#xff0c;使用不同的数据库&#xff0c;只要改这个&#xff0c;不用记住那么多的函数$hostlocalhost; //数据库主机名$dbNamedb_database15; //使用的数据库$use…

pat 团体赛练习题集 L2-008. 最长对称子串

对给定的字符串&#xff0c;本题要求你输出最长对称子串的长度。例如&#xff0c;给定"Is PAT&TAP symmetric?"&#xff0c;最长对称子串为"s PAT&TAP s"&#xff0c;于是你应该输出11。 输入格式&#xff1a; 输入在一行中给出长度不超过1000的…

在Apache Camel中使用Spring数据

Spring Data通过创建智能的DAO节省了很多时间&#xff0c;您基本上不需要编写任何代码就可以免费获得DAO。 它基本上遵循Eric Evans的DDD书中的“ 存储库模式 ” &#xff0c;并将实体视为集合。 它有一个很好的约定&#xff0c;允许您为复杂查询指定条件&#xff0c;甚至可以将…

python协程池操作mysql_python_协程方式操作数据库

#!/usr/bin/python3# -*- coding: utf-8 -*-import requestsimport geventimport pymysqlfrom gevent import monkey# 堵塞标记monkey.patch_all()class SqlSave(object):"""协程方式写入数据库"""def __init__(self):SQL_DBA {‘host‘: ‘loc…

bootstrap在ie8下,兼容媒体查询

最近使用bootstrap做网站的时候发现&#xff0c;在ie8下的媒体查询一直失效&#xff1a; 后来解决了&#xff0c;做如下记录&#xff1a; 1、必须运行在服务器下 2、hack 条件语法&#xff0c;如下&#xff1a; <!--[if lte ie 9]><script src"js/html5shiv.min.…

java 冒号 正则表达式_Java正则表达式问号冒号的使用

在Java和Javascript中正则表达式字符串前面加上?:表示非捕获型匹配&#xff0c;否则就是捕获型匹配。捕获型括号会将匹配到的内容捕获到一些变量里&#xff0c;这些变量按照捕获型括号的左括号为顺序从1开始编号。为了避免括号太多使编号混乱&#xff0c;也为了避免无用的捕获…

Hibernate中的一对多XML映射

一对多关系指出一个实体的单个实例与另一个实体的多个实例相关联。 换句话说&#xff0c;一个表中的每个记录与另一个表中的多个记录相关联。 让我们看看如何通过XML映射文件在Hibernate中定义这种关系。 1.实体关系图 假设我们已经在数据库中创建了学生表和部门表&#xff0…

java resize_OpenCV3 Java图像放大缩小 修改图像大小(Imgproc.resize)

Imgproc.resize()方法参数&#xff1a;src&#xff1a;输入&#xff0c;原图像&#xff0c;即待改变大小的图像&#xff1b;dst&#xff1a;输出&#xff0c;改变大小之后的图像&#xff0c;这个图像和原图像具有相同的内容&#xff0c;只是大小和原图像不一样而已&#xff1b;…

mongodb中Gson和java##Bean对象转化类

此类使用感觉比较繁琐, 每个字段加注解才可以使用, 不如mongoTemplate使用方便, 但如果使用mongo客户端的话, 还是比手动拼接快一点, 所以贴在这儿 package com.iwhere.util;import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java…

java中sql查询语句_JAVA中用 SQL语句操作小结

1、添加记录(INSERT)使用SQL语句的INSERT命令可以向数据库中插入记录&#xff0c;INSERT命令的基本形式为&#xff1a;INSERT INTO 表名 [(字段名1,字段名2…)] VALUES (值1,值2,…)若在输入记录时&#xff0c;每个字段均有内容&#xff0c;可省略表名后的字段名。该SQL语句用于…

专题:二分图匹配

挖坑转载于:https://www.cnblogs.com/bestwzh/p/6487477.html

camel eip_Apache Camel教程– EIP,路由,组件,测试和其他概念的简介

camel eip公司之间的数据交换增加了很多。 必须集成的应用程序数量也增加了。 这些接口使用不同的技术&#xff0c;协议和数据格式。 但是&#xff0c;这些应用程序的集成应以标准化的方式建模&#xff0c;有效实现并由自动测试支持。 企业集成模式&#xff08;EIP&#xff09;…