r/SpringBoot

Looking for recommendations: Best free/open-source document extraction tool for Spring Boot + React stack?

Hey everyone,

I'm currently building a full-stack app (Spring Boot backend + React frontend) and need to implement document parsing/text extraction functionality.

Requirements:

  • Budget: Free / Open Source.
  • Formats: Primarily PDFs, DOCX, and ideally scanned images/invoices (basic OCR).
  • Integration: Preferably handled on the Java/Spring Boot backend (REST API) to send structured JSON to the React client.
reddit.com
u/ishaqhaj — 20 hours ago

Layers, design and transactionality.

Hello all!

I am fairly new to Spring Boot and coding in general.

I took it upon me to build a simple browser game where the player chooses an action and gains resources over time. I am currently finishing the prototype and I am being slowly introduced to all of the concepts behind the actual coding, but also when it comes to layering and design choices as well.

On to my dilemma.

So far I have several @ Transactional annotations inside the service layer whenever I interact with the repository layer in order to ensure that no two methods make changes to the DB - throwing any calculations made go haywire. Not sure if this is a common or best practice but it was a semi-conscious decision that I made during the early stages of development.

Now I am at a point where I have two identically named methods inside the service layer:

  • calculateProgress(UUID playerId) - it searches the db for a PlayerCharacter instance using the playerId field and then does some calculations.
  • calculateProgress(PlayerCharacter character) - it already gets a PlayerCharacter instance and does the calculations.

In fact, the first one calls the second one inside its body. The reason for this is that there is a scheduler that calculates the progress in regular intervals. And that scheduler only knows the PlayerCharacter's playerId and not any other information for that PlayerCharacter. So my initial thought was to have it call calculateProgress(UUID playerId) which in turn calls calculateProgress(PlayerCharacter character) to make the calculations etc etc.

I was not thinking much about it when I first did this but now I am realising that having two methods with the exact same name (and different arguments) might be ugly/not a good practice for the readability and maintainability of my code.

Now I am thinking: I could have the scheduler method call a new service method that returns a PlayerCharacter instance if I give it the playerId, and then call calculateProgress(PlayerCharacter character).

That would mean though that I need to have the scheduler method have a @ Transactional annotation to avoid the race conditions that I mentioned earlier. That would in turn break my initial decision of having Transactional annotations in the service layer only and also move db integrity from the service layer to the scheduler layer.

So I am thinking again and I pose the same question to anyone who might read this: Is it a common/good/best practice to have transactionality into the scheduler layer as well as the service layer or is there another option for my case?

Thanks in advance for anyone providing any feedback to my conundrum!

TL;DR: Have Transactional annotated methods inside the scheduling layer as an exception OR keep them strictly inside the service layer instead? Is it a good/common practice to do that split?

reddit.com
u/ZeGuru101 — 1 day ago
▲ 9 r/SpringBoot+2 crossposts

Java+spring boot or .Net

I have been thing what should I choose for backend as i want to become a full stack engineer. I just completed js and React in frontend . I am confused between java+spring boot or .Net . I will learn python as well .

What's your opinion ? What will be better option for me ?

reddit.com
u/layla4030 — 2 days ago

Fresher Learning Queries

I want to learn springboot now from scratch any experienced candidates can you please suggest me is it good to learn springboot now in the AI era or should i focus on any other AI related skills

reddit.com
u/Minimum-Honeydew5652 — 2 days ago
▲ 15 r/SpringBoot+1 crossposts

From Excel Sheets to a small inventory system done using springboot and angulat

Two weeks ago, I set out to solve a simple problem for a local pharmacy: keeping track of inventory.

My first thought was, "Why not just use Excel?"

So I spent time designing a workbook with separate sheets for products, stock movements, sales, current stock, dashboards, and weekly reports. I added formulas, dropdown lists, search functionality, automatic calculations, and conditional formatting. It worked surprisingly well.

But as I kept building, I started running into limitations.

What happens if two people need to use it?

How do you prevent accidental edits to formulas?

How do you manage user authentication?

How do you make backups and restore data easily?

How do you package it so the business owner just clicks one button and starts working?

That's when I realized the spreadsheet had become a prototype rather than the final solution.

So I decided to build a lightweight inventory management system instead.

Tech Stack

Angular (Frontend)

Spring Boot (Backend)

SQLite (Database)

I intentionally chose SQLite because I wanted the system to run on a single computer without paying for cloud hosting or a VPS. The goal was to keep it affordable for a small business.

Some of the features I built include:

Secure login and authentication

Product management

Stock In / Stock Out transactions

Automatic current stock calculation

Sales recording

Dashboard with inventory insights

Low-stock and expiry tracking

Database backup and restore

Packaged deployment so the entire application can run from one folder

One of the most interesting parts was figuring out deployment. Instead of requiring separate frontend and backend servers, I bundled the Angular application inside the Spring Boot application, so the owner only needs to start one application. The SQLite database lives outside the application, making updates much safer because the data isn't lost when deploying a new version.

This project taught me something important: sometimes the best solution isn't the one you start with. Starting with a spreadsheet helped me understand the business workflow before writing a single line of backend code. By the time I built the application, I knew exactly what the users needed because I had already modeled the process.

Looking back, I'm glad I didn't stop at Excel. It evolved into a complete inventory management system that solves the same problem in a much more scalable way.

I'd love to hear how others approach projects like this. Have you ever started with a spreadsheet or another simple tool, only to realize it needed to become a full application?

reddit.com
u/Frosty-Lead8951 — 3 days ago

Built a component library for Thymeleaf (as a Spring Boot starter)

I kept running into the same problem on Thymeleaf projects: no real way to share reusable UI components (buttons, cards, whatever) across apps without copy-pasting HTML/CSS/JS or hand-rolling fragile th:replace fragments. No slots, no clean way to pass through arbitrary attributes (annoying if you use htmx and need hx-* on a component), no live reload for the component's own CSS/JS during development.

So I worked through building an actual Thymeleaf component library packaged as a Spring Boot starter. Auto-configured, drops into any Thymeleaf app as a dependency, with a <tcl:button>-style tag instead of fragment includes. Went from this:

<div th:replace="~{tcl/components/button :: button(label='Submit', primary='true')}"></div>

to this:

<tcl:button primary>Submit</tcl:button>

...with proper attribute passthrough and slot support so you're not limited to what the component author thought to expose. Wrote it up as a 4-part series as I went, mostly so I'd have a reference for myself next time, but figured it might help others hitting the same wall:

  • Part 1 — getting the starter set up: auto-configuration, Vite for the library's CSS/JS with instant reload while you work on the library.
  • Part 2 — turning a th:replace fragment into an actual <tcl:button> component with typed attributes plus passthrough for arbitrary ones (so hx-* etc. still work).
  • Part 3 — adding slot support, so consumers can put arbitrary content (icons, custom markup) inside a component instead of being limited to attributes.
  • Part 4 — wiring in AlpineJS for client-side interactivity, bundled cleanly inside the library itself.

Series starts here: https://wimdeblauwe.com/blog/2026/07/27/writing-a-thymeleaf-component-library

Full example code for all 4 parts: https://github.com/wimdeblauwe/blog-example-code/tree/master/thymeleaf-component-library

Curious if others building internal design systems on top of Thymeleaf have solved this differently? Did you go the same route, or land on something else (Thymeleaf dialects, a different templating layer, etc.)?

u/wimdeblauwe — 2 days ago
▲ 13 r/SpringBoot+2 crossposts

Code review

Hello, I'm an aspiring software engineer. I've recently finished developing microservice for managing projects and tasks using Spring Boot. I'd appreciate if you could review codebase of my project and provide feedback on it.

GitHub: https://github.com/Simpav-chill/tasktracker

u/Simpav1 — 4 days ago
▲ 149 r/SpringBoot+1 crossposts

Spring FlashAPI

Done writing the same CRUD boilerplate for every Spring project.
FlashAPI is coming to the Java/Spring ecosystem, much to the delight of Java developers.
Introducing Spring FlashAPI.
The idea is exactly the same as the Python version:
You define your JPA entities.
FlashAPI takes care of the REST boilerplate.
From a simple entity, you can automatically get:
CRUD
Pagination
Search & dynamic filters
Sorting
CSV / Excel / PDF exports
Bulk operations
Relationships & expand
Soft delete
Audit trail
Rate limiting
OpenAPI / Swagger
Webhooks
WebSocket events
Access control
Multi-tenancy
And most importantly, FlashAPI doesn’t try to take control of your application.
You can start with zero boilerplate, then gradually take back control of your business logic, services, and controllers.
The goal is simple:
Less repetitive CRUD, more time to build your product.
Spring FlashAPI is open source under the Apache 2.0 license.
Java 21+
Spring Boot 3.2+
Spring Data JPA
👉🏽 GitHub: github.com/HackermanMe/spring-flashapi
I’m looking for developers willing to give it a try — and, most importantly, tell me:
What is actually useful… and what isn’t?
#Java #Spring #SpringBoot #JPA #OpenSource #Backend #RESTAPI #SoftwareEngineering

u/rakakayiouu — 4 days ago

As java dev , how to get relevant with AI, is spring AI worth it

Currently I am a student, my projects are In Java Fullstack

Right now I don't even know what RAG or MCP is , and I think I should have some hands on experience of it, i should be at least aware of it, because it's a trendy topic , not these two terms only, but many things

Now should I start python, for getting into it, is there any need , or I can explore Spring AI

reddit.com
u/Acceptable-Form8979 — 4 days ago

Spring boot app

If I don’t really have a front end, and I want to learn how to test my backend, is there any video recommendations that yall that explains how to write test for it. Because I don’t want to watch a video and form wrong foundation info.

reddit.com
u/CoverRight9314 — 4 days ago

Few springboot microservices projects that Imade , for my resume

I am a student, looking for Back-end Jobs There is no frontend, as I don't enjoy frontend

u/Acceptable-Form8979 — 4 days ago

Along with Java springboot, how to keep yourself updated with other stuff

Java springboot is so vast once u dive into it, first java, then springboot, then microservices, exploring message queues , and what not

But nowadays what I have seen is that top companies organizing their hackathons, for fresh graduates

Most of them are ml based ai based, like making a model XYZ model, something like a model that detects deepfake images , that's just an example

What is the role of java springboot then, i sometimes feel I wasted my time learning this, i think I should have master python, what are ur thoughts

reddit.com
u/Acceptable-Form8979 — 7 days ago
▲ 14 r/SpringBoot+3 crossposts

Events-Caravan, an event-sourcing framework that trades the global event log for horizontal scalability (DynamoDB/SNS/SQS reference impl, Spring Boot starters)

Over the past months I've been building my pet project, and today I'm open-sourcing its core: Events-Caravan, an event-sourcing framework for Java with Spring-boot starter modules.

The framework is built around an opinionated bet made for the sake of horizontal scalability: there is no global sequence of events. Events are ordered within a single entity.

Axon's default, for comparison, keeps a totally-ordered event log, and that log eventually becomes the ceiling: the one component every write has to pass through. Give up the global ordering, and everything can partition at the entity level: the storage, the change feed, the consumers.
Events-Caravan has no central sequencer, no outbox table either: inserting an event into the database is publishing it, and the database's own change stream carries it to consumers.

Nothing is free, of course. The price for horizontal scalability is at-least-once unordered delivery and strong consistency only within one entity. I've documented every traded-away guarantee in the README's "Compromises" section, along with how to compensate.

The project is modularized. The core is plain Java interfaces to use or implement, no DSL. Reference adapters ship for DynamoDB and SNS/SQS, but the design isn't tied to AWS: any technology fitting the framework's principles can substitute AWS.

The library also brings:
- Entity state snapshotting, to avoid replaying all historic events.
- Sharding of long entity histories, so no partition grows into a bottleneck.
- An adaptive, scalable queue-polling mechanism.
- An optional, eventually consistent entity-stream that compensates for the absence of a global event log.

Apache 2.0, on GitHub with an opinionated README: https://github.com/SagynyshBaitursinov/events-caravan
Maven Central: dev.baitursinov:events-caravan

If you've run event-sourced systems in production, or are just interested in software architecture, I'd genuinely value your opinion on the design, its interfaces, and the 11 principles it's built on - all in the Readme.

u/nervous-comment — 6 days ago

What are some open source projects developed with spring boot that I can help contribute in 2026?

I've been thinking about contributing to some open source projects built with spring boot. What are some good open source projects that you think are worth contributing to in 2026?

reddit.com
u/cielNoirr — 8 days ago

Why I stopped putting Lombok anywhere near my enterprise projects

Once I got a call a while back because a customer record "wasn't processing." Two hours later the culprit turned out to be log.warn("Could not process customer: {}", customer) - @Data's generated toString() was walking a lazy @OneToMany, the persistence context was already closed, and the log line itself threw the exception. The stack trace pointed at logging code, not the real bug.

That's one reason why I don't put @Data on entities anymore. Field-based equals is wrong for most entities, a toString that walks associations is a logging incident waiting to happen, and once you're bolting @ToString(exclude = ...) back on to undo it, you haven't saved typing, you've just hidden it.

Wrote up the longer version (builders, @SuperBuilder gotchas) as chapter 5 of a series I'm doing on Spring/Java architecture. Link in comments if anyone wants it. Curious if others have hit the same lazy-loading-in-logs thing or if it's just how our entities were modeled.

reddit.com
u/kamen1991 — 8 days ago
▲ 7 r/SpringBoot+1 crossposts

I created a privacy guardrail library for Spring AI — looking for feedback on streaming with pluggable PII analyzers

Hi, I’m building Spring AI Privacy Guardrails, an open-source library for enforcing privacy boundaries around models, RAG, tools, MCP, and outputs.

GitHub: https://github.com/ultramancode/spring-ai-privacy-guardrails

One design problem I’ve been thinking about is streaming output protection.

Some applications also want a final privacy check on application-facing output, since sensitive data can still appear in model- or tool-generated responses.

Right now, when output protection is enabled, the library buffers the complete response before releasing it to the application.

This provides a strong guarantee: PII can still be detected and protected even when a sensitive value is split across multiple chunks.

The trade-off is that this is no longer true incremental streaming, and the application has to wait longer before receiving output.

A bounded rolling window could preserve incremental streaming for analyzers that have a known upper bound on how much context they need — for example, some bounded pattern-based detectors.

But NER, context-aware detection, complex patterns, or arbitrary custom analyzers may not have such a bound.

So I’m currently considering three approaches:

  1. Strict buffering
    Buffer the complete response and protect it before releasing anything to the application.

  2. Capability-gated streaming
    Allow incremental streaming only when the active analyzer can declare a safe maximum lookback or context requirement. Otherwise, fall back to full buffering.

  3. Best-effort streaming
    Use a configurable rolling window and explicitly document that some PII spanning multiple chunks may escape detection.

For a Spring AI application, which behavior would you expect from a privacy library?

I’m not attached to these three options — if there’s a better streaming/privacy model I’m missing, I’d really appreciate the feedback.

u/Illustrious_East5815 — 7 days ago

Spring Boot 4 observability tools

I’ve been spending some time looking at observability for Spring Boot 4, using my articulate project as a practical test case.

I compared three tools that fit different workflows and deployment models:

- Boot UI for local development and deep inspection
- Spring Boot Admin for a centralised dashboard across services
- Ostara for desktop-based inspection without running another server

If you’re working with Spring Boot and have been thinking about how you want to inspect and manage your applications, I’ve written up the comparison here and it has links to all the projects.

https://robintegg.com/2026/08/10/spring-boot-4-observability-options.html

I’d love to hear in the comments of any other tools that people are using to keep an eye on their Spring Boot apps.

Spoiler alert: boot-ui is awesome 🤩

u/robintegg — 9 days ago
▲ 17 r/SpringBoot+1 crossposts

What is the actual difference with and without Supplier Functional interface? And why the Supplier Functional interface is prefered?Both behave same right?

u/SmoothScience8192 — 9 days ago