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

https://github.com/vs4vijay/harbor

A Microservice in Java and Micronaut
https://github.com/vs4vijay/harbor

api java jvm micronaut microservice microservices rest-api restful-api

Last synced: about 1 year ago
JSON representation

A Microservice in Java and Micronaut

Awesome Lists containing this project

README

          

# HARBOR
A Microservice in Micronaut

## Running

```shell

# Run application
./gradlew run

# Run application in watching mode
./gradlew run --continuous

# Package application
./gradlew assemble

```

---

### Development Notes

```shell

Install SDKMAN
curl -s https://get.sdkman.io | bash

sdk install java
sdk install gradle
sdk install micronaut

mn create-app harbor -i --test=junit
mn create-controller SpaceX
mn create-bean SpaceXService
mn create-client SpaceX
mn feature-diff --features acme

gradle run
gradle jib
gradle dockerBuild
gradle dockerBuildNative
gradle nativeImage

gradle clean run

---

Micronaut

- AOT
- Fast startup time
- Low Memory Footprint
- No Reflections
- DI
- AOP
- Features
- Micronaut Data-{processor,jdbc} - https://micronaut-projects.github.io/micronaut-data/latest/guide/index.html
- Micronaut Security-{annotations,jwt}
- jib
- config-consul
- micronaut-discovery-client
- micronaut-openapi
- micronaut-jdbc-hikari
- micronaut-hibernate-jpa
- micronaut-liquibase
- micronaut-graal
- micronaut-management
- micrometer-atlas
- micronaut-tracing
- micronaut-kubernetes-discovery-client
- Microservice design patterns - Service Discovery, Circuit Breaker
- Scaffolding
- Cache
- Default Login and Logout Handler
- Various auth and security mechanisms - https://guides.micronaut.io/micronaut-security-jwt/guide/index.html
- Support for ScheduledJob
- Configuration
- Test Container
- Build Native Image using GraalVM

---

@Entity
@Id
@GeneratedValue

@JdbcRepository, {CrudRepository<>,PageableRepository<>}

Declarative Rest Client
Declarative Crud Repository
Client-side Load Balancing

application-test.yml

Annotation Configuration

Management Endpoints
/beans
/health
/metrics
/info

@Inject
EmbeddedServer server //refers to the server that was started up for this test suite

@Inject
ApplicationContext context

GraalVM

try (ApplicationContext context = ApplicationContext.run()) {
MyBean myBean = context.getBean(MyBean.class);
// do something with your bean
}
Environment environment = applicationContext.getEnvironment();
final BeanContext context = BeanContext.run();

Map inMemoryDatastore = new ConcurrentHashMap<>();

Operations and Fallback

Lombok - https://docs.micronaut.io/2.2.0/guide/index.html#lombok

Use JPARepository for Hibernate

HttpResponse.status(HttpStatus.CREATED).body("success")

@Introspected for POJO/DTO

Ref:
- https://www.youtube.com/watch?v=S5yfTfPeue8
- https://github.com/asc-lab/micronaut-microservices-poc
- https://alvarosanchez.github.io/micronaut-workshop/
- https://mfarache.github.io/mfarache/Building-microservices-Micronoaut/

```