Anjith S | Software Engineer & Backend Developer
I am a backend software engineer with over 4 years of experience building scalable applications using Java, Spring Boot, and microservices architectures.
Cloud-Native Engineering & Microservices
My expertise includes designing and deploying cloud-native solutions on AWS and GCP. I specialize in backend systems, REST APIs, and event-driven architectures using Apache Kafka and Docker containerization. I build highly reliable and performant systems for enterprise clients.
HealthTech & Site Reliability
At Quest Global and Trenser, I developed and managed backend services to process healthcare data efficiently, ensuring compliance with FHIR and DICOM standards. I have extensive experience with Kubernetes orchestration, securing medical data, and executing distributed load tests with Apache JMeter.
Portfolio & Projects
- MURAL Clinical Viewer - Spring Boot, Java, Kubernetes
- Mural Acute Care - Prioritization of at-risk patients
- DeepHealth PACS - Radiology imaging systems with GCP integration
Read my technical engineering notes, interview questions, and deep dives on Java, Spring Framework, System Design, and Cloud computing on my Learn portal.
Engineering Knowledge Base Preview
Inside the /learn page of this portfolio, you can find detailed answers to advanced backend questions like these:
- What is Spring Boot 4 and what are its 'Next-Gen' features? Spring Boot 4 is the latest major evolution, built on Spring Framework 7 and Jakarta EE 11. While it keeps the core 'magic' of auto-configuration, it introduces 'Modular Starters'—which finally solve the problem of heavy dependency bloat by letting you pull in only the specific modules you need. It also features built-in REST API versioning and first-class support for Java 21/25 Virtual Threads to handle massive concurrency without the memory overhead of traditional OS threads.
- How do Spring and Spring Boot 4 differ in 2026? The gap is wider than ever. Vanilla Spring 7 is a powerful but unopinionated toolbox that requires manual setup for everything. Spring Boot 4 acts as the 'Cloud-Native' engine that makes those tools work instantly. In 2026, the biggest difference is Boot's focus on observability-by-default and its AOT (Ahead-of-Time) compilation support, which allows apps to start in milliseconds on GraalVM—something vanilla Spring requires significant manual effort to achieve.
- What is the standard Maven setup for a modern Boot 4 project? You still want to inherit from 'spring-boot-starter-parent' in your pom.xml, but the baseline has moved. You'll notice the version is now 4.x.y and the Java baseline is strictly 17, with 21 or 25 recommended for production. This parent POM is your safety net; it manages the versions of hundreds of libraries so you don't have to worry about compatibility issues between, say, Hibernate 7 and Jackson 3.
- Is Spring Initializr still relevant with modern IDEs? It's more relevant than ever. In 2026, it's the central hub for the entire ecosystem. Whether you use the website or the built-in wizard in IntelliJ or VS Code, you're using the Initializr API. It now handles complex selections like picking between standard JARs or GraalVM Native images and setting up the new Modular Starters right from the first click.
- What are 'Modular Starters' in Spring Boot 4? This is one of the biggest changes from version 3. In the past, 'spring-boot-starter-web' was a bit of a 'fat' dependency that pulled in everything. In Boot 4, starters have been broken down into smaller, more specific modules. This means your final JAR is smaller, your attack surface for security vulnerabilities is reduced, and your startup time is faster because there are fewer beans for the framework to scan.
- How do you surgically disable a specific auto-configuration in Boot 4? You use the 'exclude' property in the @SpringBootApplication annotation. For example, if you want to manage your own database connections, you’d exclude 'DataSourceAutoConfiguration.class'. You can also do this via the 'spring.autoconfigure.exclude' property in your application.yml, which is actually the preferred way in modern DevOps because you can disable features per-environment without changing a single line of code.
- How has custom auto-configuration registration changed in recent versions? The old 'spring.factories' file is officially a relic of the past. In Spring Boot 4, you register your custom 'magic' by creating a file at 'META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports'. You just list your configuration classes there. It's faster for the framework to read and fits perfectly with the new modular loading system.
- What is the 'Back Off' mechanism in Spring Boot configuration? It's all about the '@ConditionalOnMissingBean' annotation. It basically tells the framework, 'I’ll provide a default version of this service, but only if the developer hasn't defined their own.' It’s what makes Spring Boot so flexible—it gives you a working system out of the box but 'backs off' the moment it sees you want to do something custom.
- Can you run Spring Boot 4 as a simple command-line tool? Yes, and it’s very common for data processing or migrations. You just have your main class implement the 'ApplicationRunner' interface. The 'run' method will execute as soon as the Spring context is ready, giving you full access to your @Service and @Repository beans. Once the task is done, the app shuts down cleanly, making it perfect for cron jobs or Kubernetes Tasks.
- What are the most reliable sources for externalized configuration? Spring Boot 4 supports a long list, but the 'Big Three' for production are: 1. OS Environment Variables (ideal for Docker/K8s), 2. Command-line arguments (for quick overrides), and 3. YAML/Properties files. In 2026, we also see heavy use of 'Config Trees' for Kubernetes Secrets, allowing you to mount sensitive data as files that Spring reads automatically.
- How does 'Relaxed Binding' save time during deployment? It prevents the 'kebab-case vs camelCase' headache. If your Java code expects a property called 'databaseUrl', Spring Boot will find it even if the environment variable is 'DATABASE_URL' or the YAML is 'database-url'. It makes your configuration much more resilient across different platforms (Linux, Windows, Cloud) where naming conventions often conflict.
- What is the 'Instant Feedback' feature in DevTools? It's the automatic restart and LiveReload functionality. Whenever you save a file in your IDE, DevTools detects the change and restarts the application context in a fraction of the time a full reboot would take. In 2026, it also handles state-preservation better, so you often don't even lose your current session while the app 'refreshes' underneath you.
- How do you write a 'Proper' integration test in 2026? You use '@SpringBootTest'. But the modern approach is to use 'Slice Testing' for speed—like '@WebMvcTest' if you only want to test controllers or '@DataJpaTest' for the database layer. In 2026, we almost always combine this with 'Testcontainers' to spin up a real database in Docker during the test, ensuring the test environment is a perfect match for production.
- What's the difference between Actuator endpoints and standard REST APIs? Standard APIs are for your users; Actuator endpoints are for your 'operators' (and your monitoring tools). Actuator provides deep insights into the 'health' of the app, JVM metrics, and even thread dumps via the '/actuator' prefix. In Boot 4, it also includes native support for HTTP/3 metrics and better integration with OpenTelemetry for distributed tracing.
- Properties vs. YAML: Which is the 'Senior' choice? For any professional project, YAML is the winner. It supports hierarchical data, lists, and maps much more cleanly than the old flat .properties files. In 2026, with complex cloud configurations, being able to see the structure of your settings at a glance is a massive advantage—though you have to be careful with that white-space indentation!
- What does @SpringBootApplication actually do 'Under the Hood'? It’s a shortcut for three critical annotations: '@Configuration' (allows you to define beans), '@EnableAutoConfiguration' (the engine that loads starters), and '@ComponentScan' (the scanner that finds your @Controllers and @Services). In version 4, it also includes more aggressive 'Proxy-less' bean scanning to help speed up those cold start times.
- How do you handle a port conflict during an emergency deployment? You don't need to rebuild the JAR. You can just override the port at runtime. The fastest way is passing it as a command line argument: '--server.port=9090'. If you're in a containerized environment, you just set the 'SERVER_PORT' environment variable to the new value, and Spring Boot will pick it up instantly on the next start.
- Can you swap the default Tomcat server in Boot 4? Yes, and it's quite easy. You just exclude the 'spring-boot-starter-tomcat' from your 'web' starter and add 'spring-boot-starter-jetty' or 'spring-boot-starter-undertow'. In 2026, many high-performance teams are switching to 'Netty' via WebFlux for better support of the new HTTP/3 protocols and non-blocking I/O.
- How do Spring Profiles solve the 'Environment Drift' problem? Profiles ensure you never have to hardcode environment-specific logic. You can have an 'application-prod.yml' with secure connection strings and an 'application-dev.yml' with mock data. By simply setting 'spring.profiles.active=prod' on your server, the app 'reconfigures' itself entirely. It’s the safest way to ensure that what you tested in QA is exactly what runs in Production.