• This repository has been archived on 19/Jan/2022
  • Stars
    star
    586
  • Rank 73,331 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

All development has moved to https://github.com/awspring/spring-cloud-aws Integration for Amazon Web Services APIs with Spring

spring-cloud-aws has moved! This repository is no longer actively maintained by VMware, Inc.

Spring Cloud for Amazon Web Services

Spring Cloud for Amazon Web Services, part of the Spring Cloud umbrella project, eases the integration with hosted Amazon Web Services. It offers a convenient way to interact with AWS provided services using well-known Spring idioms and APIs, such as the messaging or caching API. Developers can build their application around the hosted services without having to care about infrastructure or maintenance.

Note: Further Spring Cloud AWS versions development moved to awspring/spring-cloud-aws. The only active branch in this repository is 2.2.x.

Checking out and building

To check out the project and build it from source, do the following:

git clone https://github.com/spring-cloud/spring-cloud-aws.git
cd spring-cloud-aws
mvn package

If you encounter out of memory errors during the build, increase available heap and permgen for Maven:

MAVEN_OPTS='-XX:MaxPermSize=258m -Xmx1024m'

To build and install jars into your local Maven cache:

mvn install

Building documentation

Documentation can be built by activating the `docs`profile in the maven build. If there is an ruby error like

LoadError: no such file to load -- asciidoctor

then the user must install the asciidoctor gem and set the environment variable `GEM_HOME`to the ruby gem folder. For example:

  # Get gem info
  gem environment

  export GEM_HOME=<PATH FOR GEM ENVIRONMENT>

Using IntelliJ IDEA

Spring Cloud AWS development is done with IntelliJ IDEA. In order to create all IntelliJ IDEA project files, you have to import the file within idea as a maven project.

Note: Please make sure to revert all changes in the .idea config file directory, as the maven plugin overwrites the configuration files kept in the scm.

Running integration tests

Spring Cloud AWS contains a test-suite which runs integration tests to ensure compatibility with the Amazon Web Services. In order to run the integration tests, the build process has to create different resources on the Amazon Webservice platform (Amazon EC2 instances, Amazon RDS instances, Amazon S3 Buckets, Amazon SQS Queues). Creating these resources takes time and costs money, because every instance creation is charged with a one hour usage. Therefore Spring Cloud AWS does not execute the integration tests by default.

In order to run integration tests you must prepare three properties named accessKey,secretKey and rdsPassword. These two properties accessKey and secretKey are account/user specific and should never be shared to anyone. To retrieve these settings you have to open your account inside the AWS console and retrieve them through the Security Credentials Page. Note: In general we recommend that you use an Amazon IAM user instead of the account itself. The last password rdsPassword is used to access the database inside the integration tests. This password has a minimum length of 8 characters.

Also you must prepare the sender and recipient mail addresses to test the Amazon Simple E-Mail Service. These two addresses must be verified for the Amazon SES Service.

To build with the integration tests you must execute

mvn verify -Daws-integration-tests.access-key=<access key>  -Daws-integration-tests.secret-key=<secret key> -DrdsPassword=<rds password> -DsenderAddress=<sender address> -DrecipientAddress=<recipient address>

The integration test will create an Amazon Web Services CloudFormation stack and execute the tests. The stack is destroyed after executing the tests (either successful or failed) to ensure that there are no unnecessary costs.

Costs of integration tests

The costs for one integration test run should not be more than 0.40 $ per hour (excl. VAT).

Developing using Amazon Web Services

During development it might be time-consuming to run the integration tests regularly. In order to create a stack only once, and reuse them for the tests run, you have to create the stack manually using the template found in /spring-cloud-aws-integration-test/src/test/resources. You will need to create the stack with the name "IntegrationTestStack" to ensure that the integration tests will re-use the stack.

Getting in touch

Spring Cloud Team on Twitter

Individual team members can be found on different social media channels

Contributing

Spring Cloud is released under the non-restrictive Apache 2.0 license, and follows a very standard Github development process, using Github tracker for issues and merging pull requests into master. If you want to contribute even something trivial please do not hesitate, but follow the guidelines below.

Sign the Contributor License Agreement

Before we accept a non-trivial patch or pull request we will need you to sign the Contributor License Agreement. Signing the contributor’s agreement does not grant anyone commit rights to the main repository, but it does mean that we can accept your contributions, and you will get an author credit if we do. Active contributors might be asked to join the core team, and given the ability to merge pull requests.

Code of Conduct

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

Code Conventions and Housekeeping

None of these is essential for a pull request, but they will all help. They can also be added after the original pull request but before a merge.

  • Use the Spring Framework code format conventions. If you use Eclipse you can import formatter settings using the eclipse-code-formatter.xml file from the Spring Cloud Build project. If using IntelliJ, you can use the Eclipse Code Formatter Plugin to import the same file.

  • Make sure all new .java files to have a simple Javadoc class comment with at least an @author tag identifying you, and preferably at least a paragraph on what the class is for.

  • Add the ASF license header comment to all new .java files (copy from existing files in the project)

  • Add yourself as an @author to the .java files that you modify substantially (more than cosmetic changes).

  • Add some Javadocs and, if you change the namespace, some XSD doc elements.

  • A few unit tests would help a lot as well — someone has to do it.

  • If no-one else is using your branch, please rebase it against the current master (or other target branch in the main project).

  • When writing a commit message please follow these conventions, if you are fixing an existing issue please add Fixes gh-XXXX at the end of the commit message (where XXXX is the issue number).

Checkstyle

Spring Cloud Build comes with a set of checkstyle rules. You can find them in the spring-cloud-build-tools module. The most notable files under the module are:

spring-cloud-build-tools/
└── src
    ├── checkstyle
    │   └── checkstyle-suppressions.xml (3)
    └── main
        └── resources
            ├── checkstyle-header.txt (2)
            └── checkstyle.xml (1)
  1. Default Checkstyle rules

  2. File header setup

  3. Default suppression rules

Checkstyle configuration

Checkstyle rules are disabled by default. To add checkstyle to your project just define the following properties and plugins.

pom.xml
<properties>
<maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError> (1)
        <maven-checkstyle-plugin.failsOnViolation>true
        </maven-checkstyle-plugin.failsOnViolation> (2)
        <maven-checkstyle-plugin.includeTestSourceDirectory>true
        </maven-checkstyle-plugin.includeTestSourceDirectory> (3)
</properties>

<build>
        <plugins>
            <plugin> (4)
                <groupId>io.spring.javaformat</groupId>
                <artifactId>spring-javaformat-maven-plugin</artifactId>
            </plugin>
            <plugin> (5)
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
        </plugins>

    <reporting>
        <plugins>
            <plugin> (5)
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>
</build>
  1. Fails the build upon Checkstyle errors

  2. Fails the build upon Checkstyle violations

  3. Checkstyle analyzes also the test sources

  4. Add the Spring Java Format plugin that will reformat your code to pass most of the Checkstyle formatting rules

  5. Add checkstyle plugin to your build and reporting phases

If you need to suppress some rules (e.g. line length needs to be longer), then it’s enough for you to define a file under ${project.root}/src/checkstyle/checkstyle-suppressions.xml with your suppressions. Example:

projectRoot/src/checkstyle/checkstyle-suppresions.xml
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
		"-//Puppy Crawl//DTD Suppressions 1.1//EN"
		"https://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
	<suppress files=".*ConfigServerApplication\.java" checks="HideUtilityClassConstructor"/>
	<suppress files=".*ConfigClientWatch\.java" checks="LineLengthCheck"/>
</suppressions>

It’s advisable to copy the ${spring-cloud-build.rootFolder}/.editorconfig and ${spring-cloud-build.rootFolder}/.springformat to your project. That way, some default formatting rules will be applied. You can do so by running this script:

$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat

IDE setup

Intellij IDEA

In order to setup Intellij you should import our coding conventions, inspection profiles and set up the checkstyle plugin. The following files can be found in the Spring Cloud Build project.

spring-cloud-build-tools/
└── src
    ├── checkstyle
    │   └── checkstyle-suppressions.xml (3)
    └── main
        └── resources
            ├── checkstyle-header.txt (2)
            ├── checkstyle.xml (1)
            └── intellij
                ├── Intellij_Project_Defaults.xml (4)
                └── Intellij_Spring_Boot_Java_Conventions.xml (5)
  1. Default Checkstyle rules

  2. File header setup

  3. Default suppression rules

  4. Project defaults for Intellij that apply most of Checkstyle rules

  5. Project style conventions for Intellij that apply most of Checkstyle rules

Code style
Figure 1. Code style

Go to File → Settings → Editor → Code style. There click on the icon next to the Scheme section. There, click on the Import Scheme value and pick the Intellij IDEA code style XML option. Import the spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml file.

Code style
Figure 2. Inspection profiles

Go to File → Settings → Editor → Inspections. There click on the icon next to the Profile section. There, click on the Import Profile and import the spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml file.

Checkstyle

To have Intellij work with Checkstyle, you have to install the Checkstyle plugin. It’s advisable to also install the Assertions2Assertj to automatically convert the JUnit assertions

Checkstyle

Go to File → Settings → Other settings → Checkstyle. There click on the + icon in the Configuration file section. There, you’ll have to define where the checkstyle rules should be picked from. In the image above, we’ve picked the rules from the cloned Spring Cloud Build repository. However, you can point to the Spring Cloud Build’s GitHub repository (e.g. for the checkstyle.xml : https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml). We need to provide the following variables:

Important
Remember to set the Scan Scope to All sources since we apply checkstyle rules for production and test sources.

More Repositories

1

spring-mvc-showcase

Demonstrates the features of the Spring MVC web framework
Java
4,994
star
2

spring-security-oauth

Support for adding OAuth1(a) and OAuth2 features (consumer and provider) for Spring web applications.
Java
4,683
star
3

sagan

The spring.io site and reference application
HTML
3,127
star
4

spring-native

Spring Native is now superseded by Spring Boot 3 official native support
Java
2,746
star
5

spring-data-book

Spring Data - The Definitive Guide - Modern Data Access for Enterprise Java Developers
Java
1,379
star
6

greenhouse

Reference web application for Spring technologies and social destination for Spring developers.
Java
1,320
star
7

spring-android-samples

Spring for Android Sample Applications
Java
761
star
8

spring-android

Support for Spring's RestTemplate within native Android applications
Java
704
star
9

spring-cloud-gcp

Integration for Google Cloud Platform APIs with Spring
Java
698
star
10

spring-roo

Spring Roo is a next-generation rapid application development tool for Java developers. It focuses on higher productivity, stock-standard Java APIs, high usability, avoiding engineering trade-offs and facilitating easy Roo removal.
Java
695
star
11

spring-hadoop

Spring for Apache Hadoop is a framework for application developers to take advantage of the features of both Hadoop and Spring.
Java
624
star
12

spring-social

Allows you to connect your applications with SaaS providers such as Facebook and Twitter.
Java
615
star
13

spring-social-samples

Samples of using Spring Social
Java
532
star
14

spring-cloud-security

Security concerns for distributed applications implemented in Spring
Java
523
star
15

spring-hadoop-samples

Spring Hadoop Samples
Java
490
star
16

spring-xd

Spring XD makes it easy to solve common big data problems such as data ingestion and export, real-time analytics, and batch workflow orchestration
Java
481
star
17

spring-scala

Scala
462
star
18

rest-shell

Command-line shell for interacting with Spring HATEOAS-compliant REST resources
Java
455
star
19

spring-data-keyvalue-examples

Examples using Spring Data Key Values features
XSLT
434
star
20

spring-security-saml

SAML extension for the Spring Security project
Java
417
star
21

spring-data-solr

Spring Data - Apache Solr integration
Java
385
star
22

reactive-streams-commons

A joint research effort for building highly optimized Reactive-Streams compliant operators.
Java
353
star
23

spring-integration-kafka

Java
325
star
24

authserver

Java
319
star
25

spring-security-oauth2-boot

Provides spring-security-oauth2 & Boot 2 integration (i.e. autoconfig)
Java
314
star
26

spring-ide

Spring Development Environment for Eclipse
Java
304
star
27

eclipse-integration-gradle

Gradle Tooling for Eclipse
Java
300
star
28

spring-batch-admin

Spring Batch Admin: runtime application and utilities for running Jobs with Spring Batch
Java
271
star
29

spring-social-facebook

Facebook API binding and connect support.
Java
244
star
30

sso

Java
238
star
31

spring-cloud-pipelines

[DEPRECATED] Codebase containing Concourse and Jenkins opinionated pipelines. Moved to https://github.com/CloudPipelines/
Shell
235
star
32

aws-maven

Java
215
star
33

platform

The lean and modular platform for modern applications
Groovy
215
star
34

sample-zuul-filters

Samples of custom Zuul 1 filters for use in Spring Cloud Netflix
Java
210
star
35

spring-integration-java-dsl

Java
193
star
36

spring-mobile

Extensions to Spring MVC for developing mobile web applications.
Java
181
star
37

spring-xd-samples

Sample starter applications and code for use with the Spring XD project
Java
180
star
38

spring-security-javaconfig

Spring Security Java Configuration Support (to be merged with spring-security-config)
Java
176
star
39

spring-cloud-cluster

This project is now superseded by code in Spring Integration.
Java
155
star
40

head-first-reactive-with-spring-and-reactor

Java
152
star
41

grails-data-mapping

Grails Data Mapping Project
151
star
42

spring-data-document-examples

Examples using Spring Data Document features
Java
148
star
43

spring-cloud-etcd

Java
144
star
44

spring-mobile-samples

Spring Mobile Sample Applications
JavaScript
144
star
45

Spring-Integration-in-Action

Source code to accompany the book
Java
134
star
46

aws-refapp

Refernce app for spring-cloud-aws
Java
132
star
47

spring-social-twitter

Twitter API binding and connect support.
Java
120
star
48

toolsuite-distribution

the distribution build for the Spring Tool Suite and the Groovy/Grails Tool Suite
Shell
109
star
49

spring-sync

Enables efficient communication and data synchronization between clients and Spring server applications.
Java
107
star
50

springbox-cloud

Spring Cloud Reference Application
Java
107
star
51

understanding

105
star
52

zero-downtime-deployment

Code backing up the article about zero downtime deployment
Java
101
star
53

hystrix-dashboard

Java
99
star
54

spring-cloud-stream-app-starters

Starters for Spring Cloud Stream Apps
Java
93
star
55

reactor-samples

Sample code of how to do simple things in Reactor
Java
92
star
56

tensorflow

Java
90
star
57

spring-data-jdbc-ext

Spring Data JDBC Extensions. Support for database specific extensions to standard JDBC including support for Oracle RAC fast connection failover, AQ JMS support and support for using advanced data types.
Java
88
star
58

spring-social-github

Github API binding and connect support.
Java
87
star
59

reactor-spring

Reactor 2.0 Spring Components
Java
87
star
60

spring-data-rest-webmvc

Spring Data REST Exporter starter web application
Java
86
star
61

spring-boot-r2dbc

Experimental Spring Boot support for R2DBC
84
star
62

spring-init

Java
83
star
63

reactor-ipc

Crossing IO boundaries on the JVM with Reactive Streams
CSS
78
star
64

spring-framework-issues

User-contributed projects reproducing issues logged against Spring Framework GitHub issues. Note: this is not the Spring Framework issue tracker -->
Java
78
star
65

spring-cloud-loadbalancer

Exploratory repo for a load balancer implementation. Now part of spring-cloud-commons
Java
75
star
66

spring-social-linkedin

LinkedIn API binding and connect support.
Java
72
star
67

spring-test-htmlunit

Provides integration with Spring Test MVC and HtmlUnit
Java
71
star
68

html5expense

Expense reporting reference app demonstrating HTML5 and cross-platform mobile
JavaScript
71
star
69

scripts

Shell
68
star
70

spring-integration-dsl-scala

Spring Integration Scala DSL
Scala
67
star
71

gs-routing-and-filtering

Routing and Filtering :: Learn how to route and filter requests to a microservice using Netflix Zuul
Java
67
star
72

spring-cloud-dataflow-server-kubernetes

Spring Cloud Data Flow Implementation for Kubernetes
XSLT
65
star
73

spring-data-graph

Provides support to increase developer productivity in Java when using a graph database like Neo4j. Uses familiar Spring concepts such as a template classes for core API usage and provides an annotation based programming model using AspectJ.
Java
65
star
74

spring-gemfire-examples

Sample projects to get started with Spring Gemfire
Java
64
star
75

fortune-teller

Yet another great Spring Cloud sample app...
Java
60
star
76

zuul-server

Java
60
star
77

reactor-core-dotnet

Fluent reactive programming library for C# on top of Reactive-Streams, mirroring the Reactor-Core for JVM
C#
58
star
78

spring-flex

Spring BlazeDS Integration
Java
57
star
79

spring-cloud-config-server-mongodb

Java
57
star
80

spring-data-solr-examples

Spring Data Solr - Examples
Java
57
star
81

spring-integration-dsl-groovy

Groovy DSL for Spring Integration
Groovy
56
star
82

spring-insight-plugins

Public Repository of Plugins for Spring Insight
Java
55
star
83

messaging-application

Sample application used for the presentation showing different test types for an event driven application
Java
53
star
84

propdeps-plugin

New "provided" and "optiona;
Groovy
52
star
85

reactor-scala-extensions

A scala extension for Project Reactor's Flux and Mono
Scala
52
star
86

cdc-debezium

Change Data Capture (CDC) source that captures and streams change events from various databases. Leverages on Debezium and supports MySQL, PostgreSQL, MongoDB, Oracle and SQL Server databases.
Java
52
star
87

reactor-core-js

The Reactive-Streams based implementation of Reactor-Core in Javascript
JavaScript
51
star
88

spring-python

This project has moved to https://github.com/springpython/springpython. This repo is an archived fork and will not see more updates.
Python
49
star
89

spring-cloud-rsocket

This repository is now inactive. Please see https://github.com/rsocket-routing/
Java
49
star
90

spring-data-graph-examples

Examples using Spring Data Graph features
Java
49
star
91

flight627

prototype work towards cloud-based developer tooling
JavaScript
48
star
92

greenhouse-android

Greenhouse native Android client
Java
48
star
93

spring-tenancy

Spring Tenancy
Java
47
star
94

cloudpipelines-scripts

https://cloud.spring.io/cloudpipelines-scripts/
Shell
46
star
95

spring-security-saml-dsl

Spring security okta dsl.
Java
43
star
96

spring-hadoop-samples-old

Sample Applications for getting started with Spring for Apache Hadoop
Java
43
star
97

reactor-tools

A set of tools to improve Project Reactor's debugging and development experience.
Java
43
star
98

spring-cloud-stream-modules

Spring Boot based enterprise integration applications that provide integration with external systems
Java
42
star
99

spring-net-rest

Simplifies communication with HTTP servers, and enforces RESTful principles. It handles HTTP connections, leaving application code to provide URLs (with possible template variables) and extract results.
C#
42
star
100

cloudfoundry-service-broker

Sample project for Spring Cloud - Cloud Foundry Service Broker
Java
41
star