Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ethlo/lamebda

Powerful plugin system for adding custom functionality to existing applications, supporting both pre-compiled or source code, with live reload.
https://github.com/ethlo/lamebda

compiler java on-the-fly plugin-system spring spring-mvc

Last synced: 6 days ago
JSON representation

Powerful plugin system for adding custom functionality to existing applications, supporting both pre-compiled or source code, with live reload.

Awesome Lists containing this project

README

        

Lamebda logo

[![Maven Central](https://img.shields.io/maven-central/v/com.ethlo.lamebda/lamebda.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.ethlo.lamebda%22)
[![Hex.pm](https://img.shields.io/hexpm/l/plug.svg)](LICENSE)

A simple, powerful, plugin system for adding new API endpoints or custom functionality to you Spring project.
Oftentimes there are conflicting requirements when utilizing a common main application. The required custom functionality needed is often easy to do with a few lines of code, but is not acceptable to add to your main code-base. With Lamebda you can load libraries with custom functionality.

> It Really Whips The Lambda's Ass!

## Example use-cases

* Ad-hoc API services and integration projects - Changes in the integration code can evolve freely from the core service
* Transactional support across multiple API calls
* Batch multiple API calls to avoid chatty data exchange
* API prototyping
* A powerful support tool for extracting data or changing state.

## Getting started

### Integrating with your project

#### Usage with Spring Boot and Spring MVC

Add dependency to your `pom.xml`
```xml

com.ethlo.lamebda
lamebda-spring-web-starter
{$lamebda_version}

```

Add the following properties to your applications `application.properties|yaml`:
```properties
lamebda.enabled=true
lamebda.root-directory=/var/lib/lamebda
lamebda.request-path=/gateway
```

### Project configuration
`project.properties`
* `project.name` - Human-readable name of the project. Optional.
* `project.base-packages` - The base packages that Spring IOC container is scanning for services and controllers.
* `project.root-request-path-enabled` - Default is true. If you set this to false, the URLs in this project will not have the prepended `gateway` path.
* `project.url-prefix-enabled` - Default is true. If you set this to false the URLs in this project will not have the prepended project alias.

To create a project for deploying into Lamebda, please see https://github.com/ethlo/lamebda-samples.

### Monitoring
The loaded project(s) can be monitored using a custom [Actuator](https://docs.spring.io/spring-boot/reference/actuator/index.html) endpoint, under `/actuator/lamebda`.