This blog post will integrate the Spring AI framework into a Java application. We’ll use a simple project that includes a ChatService
and a ChatController
to demonstrate using the Spring AI framework to generate text & image responses and horoscopes based on user input.
Category Archives: Spring Boot
Vault for storing secrets (plus Spring Boot & Mongodb)
So this is a mix of a couple of howtos. First, we have a simple Spring Boot app that retrieves some data from a MongoDB database that has authentication enabled to access it. Next, we will see how to store secrets in a Vault implementation and then programmatically access it (in our case the user ID and password to access the database).
Using Spring Boot to invoke ChatGPT/OpenAI API
OpenAI provides us the ability to invoke its features via RESTful APIs. This blog shows how to invoke the API using Spring Boot. There is nothing special here and no OpenAI Java libraries that I use. One can do the same in standard Java (non-spring) or even in more concise code with Nodejs. But here goes a sample with Spring Boot.
Spring Boot and Redis PubSub
A simple Spring Boot sample to publish a message to a Redis queue, with a message subscriber that consumes the message Spring Data. See README in Github for how to set up a local Redis and run the code.
Spring Boot and Redis
A simple Spring Boot sample to save and retrieve an object from Redis using Spring Data. See README in Github for how to setup a local Redis and run the code.
Metrics with Spring Boot, Prometheus and Grafana
Capturing metrics from your system is critical to understanding its internal behavior and to tune its performance. Without this you are operating in the blind. In this post we will go through how you can gather metrics from a Spring Boot application using Prometheus, Grafana and Micrometer.
AWS Beanstalk (running Spring Boot jar) and Log aggregation with ElasticSearch & Filebeat
Most serious applications (and distributed microservices style architectures) will require to provide a log aggregation & analysis feature to its dev & operations teams. Reviewing log entires from 10s or 100s of server instances is not something to take lightly. Whether you choose to use a commercial product or an open source offering – that does not matter; just make sure you have one available.
Recently I have been deploying applications using AWS Beanstalk. You can definitely configure CloudWatch Logs to send log streams over to AWS ElasticSearch service. Log messages can be routed to a Lambda function which would break the log messages into individual attributes suitable for indexing. I wanted to try a slightly different route where I depend less on CloudWatch Logs and more on open source tools. Enter filebeat on Beanstalk.
Spring Boot service in Docker Container
Updated one of my previous Spring Boot sample service to run within a Docker container – https://github.com/thomasma/quote-service-docker. You can run it locally w/o Docker as a regular Spring Boot app and next run it inside a Docker container. Make sure that you have Docker setup correctly and tested prior to running this app.
Serverless Architecture Style
To discuss Serverless Architecture we need to understand how we got here. From using physical machines we moved to virtual machines (somewhere in between a few brave folks also used linux/solaris containers). The current trend is container technologies such as Docker or CoreOS RKT which allow even more efficient use of resources. Regardless of which you use, we are often required to plan our application infrastructure needs upfront and permanently keep the “servers” running.