Liferay and Spring Boot, each doing what it does best
Liferay DXP is very good at pages, content, users, permissions and approval workflow. Spring Boot is very good at business logic, heavy processing and talking to the systems behind a portal. Most of our Liferay platforms use both — and the work that decides whether they stay fast, secure and upgradeable is how the two are joined.












































What we integrate
Six parts of a Liferay and Spring Boot platform
Our Liferay DXP and Java engineers work on these projects as one team, so the portal and the services behind it are designed together rather than negotiated across a handover — on the same engineering rules as our Spring Boot builds.
Architecture & the split
A clear line between what Liferay owns — pages, content, users, roles, workflow — and what lives in Spring Boot services, written down so the next team knows where new logic goes.
Portlets over Spring Boot APIs
React and Angular portlets and custom elements inside Liferay pages, calling Spring Boot REST APIs — the pattern behind Bank of Baroda's risk dashboards and most of our banking portals.
Microservice client extensions
Spring Boot services registered as Liferay client extensions and triggered by Object actions and workflow, so custom logic runs outside Liferay and survives its upgrades.
Liferay headless APIs from Spring
Spring Boot services that read and write Liferay content, users and Objects through its REST, GraphQL and batch APIs — for synchronisation, imports and reporting.
SSO & token propagation
One sign-in across Liferay and the services behind it — Liferay as the OAuth 2.0 server or a shared identity provider through SAML, OpenID Connect, CAS or Active Directory.
Kaleo workflow & events
Maker-checker approvals in Liferay's Kaleo workflow that hand decisions to Spring Boot services, and events in both directions so neither side polls the other.
Who does what
What belongs in Liferay, and what belongs in a Spring Boot service
Liferay should own what a portal platform is built for: pages and navigation, web content and documents, users, organisations, roles and permissions, forms, Kaleo approval workflow, search across content, and the personalisation that decides who sees what. Rebuilding any of that in custom code is expensive and makes every upgrade harder.
Spring Boot should own the business domain: calculations, rule engines, risk scoring, pricing, data ingestion, batch processing, and integration with core banking, ERP and partner systems. That logic changes on the business's schedule, not Liferay's; it often needs to scale separately from the portal; and keeping it in plain Spring Boot means it can be tested, released and upgraded without touching the portal — and reused by a mobile app or a partner API later.
Not everything needs a separate service. Small, portal-specific logic — a model listener, a custom field rule, a screen's data access — is often better as a Liferay OSGi module or a Liferay Object, because a network hop and a second deployment would cost more than they save. The assessment draws this line component by component and records the reason for each decision.
- Liferay — pages, content, documents, users, roles, permissions, forms, Kaleo workflow, content search
- Spring Boot — domain logic, rule engines, data ingestion, batch jobs, integrations with core systems
- Liferay Objects or OSGi modules — small, portal-specific data and logic that does not need its own service
- Shared — identity, audit trail and the API contracts between the two, owned by one team
Integration patterns
The four ways we connect Liferay and Spring Boot
Portlets and custom elements calling Spring Boot. The screen lives in Liferay — a React or Angular portlet, or a custom element client extension — and calls Spring Boot REST APIs for its data and actions. Liferay handles the page, the menu, the login and who can see the screen; the Spring Boot service does the work. This is the most common pattern in our banking and government portals, and the one Bank of Baroda's early-warning system uses for its risk dashboards.
Spring Boot as a microservice client extension. On current Liferay DXP releases, a Spring Boot application can be registered with Liferay as a microservice client extension: Liferay calls it when an Object entry is created or changed, or when a workflow reaches a step, and passes an OAuth 2.0 token the service verifies. Custom logic that used to be deployed as OSGi modules inside Liferay now runs and scales outside it, so a Liferay upgrade no longer means recompiling and retesting it — and on Liferay SaaS, client extensions are the way custom code is added at all.
Spring Boot calling Liferay's headless APIs. Where Liferay holds data another system needs, or the other way round, a Spring Boot service reads and writes it through Liferay's REST and GraphQL endpoints — web content, documents, users, and Objects, which get their own endpoints automatically — and uses the batch engine for bulk imports and exports rather than thousands of single calls.
Events in both directions. When something happens in Liferay that a service must react to — a user registered, an Object entry approved — Liferay publishes it through an Object action, a webhook or a model listener, and the service consumes it from a queue. When a service finishes work the user is waiting for, it notifies Liferay, which raises an in-app or email notification. Neither side polls the other, and either can be down briefly without losing work.
Identity
One sign-in across Liferay and every service behind it
Users sign in once, to Liferay, and the services behind it must know who they are and what they may do. We set this up in one of two ways. Liferay can act as the OAuth 2.0 authorisation server: front-end code in a portlet or custom element gets a token for the signed-in user, and each Spring Boot service, configured as an OAuth 2.0 resource server, verifies that token before doing anything. Or Liferay and the services share an external identity provider — Keycloak, Azure AD, an Active Directory federation or CAS — through SAML or OpenID Connect, and trust the same tokens.
Authorisation is enforced in the service as well as on the screen. Hiding a button in Liferay is not security; the Spring Boot service checks the user's roles or scopes on every call, so the API is safe even if someone calls it directly. Service-to-service calls use their own client credentials, never a user's password or a shared admin account. Conscious Connects runs on Liferay DXP, Spring Boot and React behind CAS single sign-on, and removing the separate logins improved sign-in conversion by 45 %; Wipro's employee portal signs its staff in through their existing Active Directory.
Workflow
Kaleo approvals in Liferay, decisions carried out by Spring Boot
Regulated work usually needs a person to approve a change before it takes effect: a risk indicator edited, a threshold changed, a customer record corrected. Liferay's Kaleo workflow is good at this — multi-level maker-checker routing, assignment by role, deadlines, reminders and a full history — so we use it for the approval and let the Spring Boot service carry out the decision once it is approved. The audit trail shows who proposed what, who approved it and when the service applied it.
For Bhutan's central bank, the EWS-Plus platform on Liferay DXP 7.4 uses a multi-level Kaleo maker-checker workflow for indicator data, with Liferay REST service modules for ingestion and a customised Elasticsearch index that returns sub-second search across millions of financial records — and no indicator can be changed without approval. At Bank of Baroda, an RBI-compliant maker-checker workflow runs on the Liferay platform alongside the Spring Boot services that hold the early-warning logic.
Proof
Liferay and Spring Boot platforms we have put into production
Bank of Baroda's early-warning system was a monolith built for one bank's data. After the mergers with Vijaya Bank and Dena Bank we rebuilt it as Spring Boot microservices on Java 11 behind Liferay DXP 7.4, with Angular portlets for the risk officers and data-ingestion pipelines for the merged entities' systems. The platform absorbed three times the data volume, risk-review cycles fell from two days to four hours, and no data was lost in the move.
Triton Digital's publisher portal runs on Liferay DXP 7.2 with Spring Boot behind it, pulling real-time listener data from streaming measurement systems over REST and handing data to advertiser platforms through custom export modules. Publisher self-service cut support tickets by 60 %, automated yield reports save the analytics team more than 200 hours a month, and the portal onboarded more than 1,000 publisher accounts in its first year.
The same split runs through intranets and partner portals: ITC Infotech's intranet on Liferay DXP 7.0 and Spring Boot brings supply-chain, SAP and HR data into role-based dashboards, and Engineers India's document platform on Liferay DXP 7.4, Spring Boot and React moved more than 200,000 engineering documents and cut retrieval time from hours to seconds.
Upgrades
Keeping two release cycles apart, and moving old Spring portlets forward
Liferay now ships quarterly releases, and Spring Boot has its own release train. The integration is designed so each side can upgrade without the other: the services and the portal talk only through versioned REST contracts and events, contract tests run in both pipelines, and custom logic that lives outside Liferay — in Spring Boot services or client extensions — is not recompiled when Liferay changes. Our Spring Boot migration and Liferay upgrade practices plan the two together when both are behind.
Older portals often carry Spring MVC portlets from Liferay 6.x. On current Liferay they can move to PortletMVC4Spring, Liferay's supported way to run Spring Portlet MVC, which keeps the code largely as it is; or the screen can be rebuilt as a React portlet over a Spring Boot or Spring MVC API, which is what we did at ICICI Bank — the business logic stayed in Java 11 and Spring MVC while the screens moved to React portlets, and pages loaded 55 % faster. The assessment recommends one route per portlet.
Timeline & cost
How a Liferay and Spring Boot project is scoped
We start with a fixed-fee assessment of two to three weeks. It maps every screen, workflow and integration, decides component by component what belongs in Liferay and what belongs in a service, chooses the integration pattern and the identity model, and ends in a phased plan with a fixed price for the first release.
Cost is driven by the number of screens and workflows, the number and state of the systems behind the portal, the identity setup, how much existing portal code and data has to move, and the compliance and audit requirements. For new platforms the foundations — identity, API gateway, pipelines and monitoring for both sides — are built with the first release and reused by every later one.
Running Liferay with Java services behind it?
A two- to three-week fixed-fee assessment maps what belongs in Liferay and what belongs in Spring Boot, the integration pattern and the sign-in model — with a fixed price for the first release, whether or not you build it with us.
Book an integration assessmentOur technology stack
What a Liferay and Spring Boot platform runs on
Liferay DXP for the portal, Spring Boot on a long-term-support Java release for the services, React or Angular on the screen, PostgreSQL, Elasticsearch and Redis underneath, and containers on the cloud or data centre you already use.
How we deliver
From assessment to a portal and services in production
Five phases, each ending in something you can check: a component map, a working sign-in across both sides, screens on real services, verified integrations, and a release your team can run.
Assess
Screens, workflows, integrations and identity mapped; what goes in Liferay and what goes in Spring Boot decided per component; a fixed price for the first release.
Foundations
Single sign-on and token verification across Liferay and the services, API contracts, pipelines and monitoring for both sides.
Build together
Portlets, Objects and workflow in Liferay and the Spring Boot services behind them, built by one team in two-week sprints.
Integrate
Core, ERP and partner systems connected through Spring Boot adapters with retries, circuit breakers and dashboards, then load-tested.
Release & run
Staged rollout, run-books for both sides, and support that keeps Liferay and Spring Boot current without breaking each other.
Case studies
Liferay and Spring Boot in production
Early-warning systems for a bank and a central bank, a publisher portal and an event platform — each with Liferay in front, Spring Boot behind, and the outcome the client measured.
Bank of Baroda — EWS Migration
Early Warning System Migration & Enhancement for Public Sector Bank. ATS led the complete migration to a Spring Boot + Angular architecture on Liferay DXP 7.4, introducing Angular portlets for dynamic UI, a multi-level maker-checker approval workflow, and predictive analytics modules for real-time financial risk flagging.
Read case study
Central Banking / Financial RegulationEWS-Plus — Royal Monetary Authority of Bhutan
National Banking Sector Early Warning System for Fraud & Financial Stability Monitoring. ATS built a comprehensive Liferay DXP 7.4 EWS platform featuring Liferay REST service modules for data ingestion, a multi-level Kaleo workflow for indicator data review (maker-checker), custom Elasticsearch integration for real-time indexed search and alerting, an automated notification system (in-app and email), and dynamic Excel reporting.
Read case study
Digital Audio TechnologyTriton Digital
Digital Audio Streaming Analytics & Publisher Management Portal. ATS delivered a Liferay-based publisher portal with role-based analytics dashboards, automated yield reporting, audience segmentation tools, and integrated advertising management.
Read case study
Event Technology / Social PlatformConscious Connects
Event Management & Digital Marketing Social Platform with PayPal Monetisation. ATS architected and built a Liferay DXP + Spring Boot + React platform featuring Central Authentication Service (CAS) for enterprise-grade SSO, PayPal payment gateway integration for paid events, Elasticsearch-powered event discovery, and full social media integration for event promotion.
Read case study
Also in our Liferay and Java practice
Liferay DXP development
Customer portals, intranets and government platforms on Liferay DXP — and the full list of our Liferay case studies.
ExploreLiferay headless integration
Liferay content and services delivered to Next.js front ends, mobile apps and partner systems through REST and GraphQL.
ExploreSpring Boot microservices
Service boundaries, data ownership, events, gateway and observability for the services behind the portal.
ExploreFAQs
Liferay and Spring Boot — questions we are asked first
Can Spring Boot run inside Liferay?+
Not as a Spring Boot application. Liferay runs custom code as OSGi modules, and Spring Boot expects to own its own runtime. Spring Portlet MVC can run inside Liferay through PortletMVC4Spring, but for business logic the usual answer is a separate Spring Boot service that Liferay calls over REST or as a microservice client extension.
Should our business logic go in Liferay modules or a Spring Boot service?+
Domain logic that changes on the business's schedule, needs to scale on its own or will be reused outside the portal belongs in Spring Boot. Small, portal-specific logic — a model listener, a field rule, a screen's data access — is often simpler as a Liferay OSGi module or Object. Our assessment draws the line component by component.
How does a signed-in Liferay user's identity reach the Spring Boot service?+
Either Liferay acts as the OAuth 2.0 authorisation server and the front end passes a user token that the Spring Boot service verifies, or both trust a shared identity provider such as Keycloak, Azure AD, Active Directory or CAS through SAML or OpenID Connect. The service checks roles or scopes on every call rather than relying on what the screen shows.
What are Liferay microservice client extensions, and do they work with Spring Boot?+
They are applications that run outside Liferay and are registered with it, so Liferay can call them — for example when an Object entry changes or a workflow reaches a step — with an OAuth 2.0 token the service verifies. Spring Boot is a natural fit for them. They keep custom logic out of the Liferay runtime, which makes upgrades easier, and on Liferay SaaS they are the way custom code is added.
Can Liferay's Kaleo workflow trigger a Spring Boot service?+
Yes. We use Kaleo for the approval itself — maker-checker levels, assignments, deadlines and history — and call the Spring Boot service when the workflow reaches the step that applies the decision, so the audit trail covers both the approval and the change. Bhutan's central bank and Bank of Baroda both run maker-checker approval in front of their early-warning logic.
What happens to our Spring MVC portlets when we upgrade Liferay?+
They can move to PortletMVC4Spring, Liferay's supported way to run Spring Portlet MVC on current releases, which keeps most of the code; or the screen can be rebuilt as a React portlet over a Spring API, as we did at ICICI Bank, where pages then loaded 55 % faster. The assessment recommends one route per portlet.
Let’s work together
Tell us how your portal is built
Send the Liferay version, what runs behind it and how users sign in — we will come back within a couple of days with the likely integration pattern and a bracket, and a fixed price after the assessment.