Architecture diagrams are useful until the code stops obeying them. This piece looks at a harder problem: how to make Java architecture boundaries executable with Quarkus, tests, and build-time feedback. The goal is not prettier diagrams. It is fewer silent boundary violations and less architectural drift. Useful if your architecture rules live in diagrams but not in feedback loops. https://lnkd.in/dTEQGJj8 #Java #Quarkus #SoftwareArchitecture
Markus Eisele’s Post
More Relevant Posts
-
🚀 Internal Working of IOC (Inversion of Control) in Spring. Understanding how Spring manages your application behind the scenes 👇 📌 Step-by-Step Flow: 1️⃣ Configuration Loading → Spring reads config (@Component, @Bean, etc.) 2️⃣ Bean Definition → Classes are identified & metadata is created 3️⃣ IOC Container → ApplicationContext initializes 4️⃣ Bean Creation → Objects created by Spring (no "new") 5️⃣ Dependency Injection → Dependencies injected (@Autowired) 6️⃣ Initialization → Init methods called (@PostConstruct) 7️⃣ Ready to Use → Bean is fully configured ✅ 8️⃣ Lifecycle Management → Create → Use → Destroy 9️⃣ Destruction → Cleanup (@PreDestroy) 💡 In Short: Spring handles object creation & dependencies, you focus only on business logic! ✨ IOC = Less effort, more control #Java #SpringBoot #SpringFramework #IOC #DependencyInjection #BackendDevelopment #Coding #InterviewPreparation
To view or add a comment, sign in
-
-
Nice material how to write efficient architecture (to handle many requests per seconds). It is always the same question we stand in front of Java and other platforms. https://lnkd.in/dm2_8XJX
To view or add a comment, sign in
-
🔒 Singleton Design Pattern — One Instance to Rule Them All Ever faced a situation where you need exactly one instance of a class throughout your application? That’s where the Singleton Design Pattern comes in. 💡 What is it? The Singleton pattern ensures that a class has only one instance and provides a global point of access to it. 🚀 Why use Singleton? Control shared resources (e.g., database connections, logging systems) Avoid unnecessary object creation Maintain a single source of truth 🧠 How it works: Make the constructor private Create a static instance of the class Provide a public method to access that instance 🧩 Simple Example (Java): public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ⚠️ Things to watch out for: Thread safety issues in multithreaded environments Difficulties in unit testing Can lead to hidden dependencies if overused ✅ Pro Tip: Use Singleton only when truly needed. Overusing it can make your system rigid and harder to maintain. #DesignPatterns #SoftwareEngineering #Java #Programming #SystemDesign #Coding
To view or add a comment, sign in
-
🚀 Day 98/100 - Spring Boot - Creating & Listening to Custom Events As, we have discussed event-driven architecture in the previous post (https://lnkd.in/dWjTG_3j)... Now let’s implement it in Spring Boot. ➡️ Create and Listen to Custom Events it's a 3-step process: 🔹Step 1: Define a Custom Event 🔹Step 2: Publish the Event 🔹Step 3: Listen to the Event ❗See attached image for code 👇 ➡️ What’s Happening Actually? 🔹Event is published after user creation 🔹Listener automatically reacts 🔹No direct dependency between components #100Days #SpringBoot #EventDriven #Java #BackendDevelopment #SoftwareEngineering
To view or add a comment, sign in
-
-
Spring Boot Circular Dependency — Dangerous issue ⚠️ Example: Service A → depends on Service B Service B → depends on Service A 👉 Boom 💥 Circular dependency error 💡 Why it happens: Poor design & tight coupling Solutions 👇 ✅ Refactor logic ✅ Use constructor injection properly ✅ Introduce third service ✅ Use @Lazy (temporary fix) ⚠️ Avoid: Field injection (hard to debug) 👉 Best practice: Use constructor injection ALWAYS Clean architecture prevents these issues 🔥 #SpringBoot #Java #CleanCode
To view or add a comment, sign in
-
Devlog #6 - PulseNotify: Sometimes the best architectural decision is switching before you go too deep in the project. Today: - Switched from Thymeleaf to FreeMarker for lightweight, database driven template processing. - Built the TemplateController with a dedicated render endpoint - Used Java 21 Records with @Valid to ensure data integrity across the API - Achieved full coverage with JUnit 5 & Mockito, using @Spy to verify real FreeMarker processing. Check the commits here: https://lnkd.in/dPYf3m_D #Java #SpringBoot #Microservices #BuildingInPublic #SoftwareArchitecture
To view or add a comment, sign in
-
-
Have you ever debugged a production issue where logs show the same error everywhere… but you still can’t figure out what actually failed? I used to make this mistake a lot — catch exception → log error → throw again Service logs Repository logs Controller logs Same exception 3–4 times. Just noise. Then I changed one simple thing: don’t log where you’re just throwing the exception. Now I follow this: Service/Repository → just throw or wrap the exception Log only once at the boundary (API / consumer) Always add context We often don’t pay much attention to logging, but it plays a crucial role when debugging a system. You need clarity on where to log, what to log, and where not to. Now instead of messy logs, I get one clear error log with full context. Debugging feels less like guessing and more like tracing a story. Less logs. Better logs. That’s the real strategy. #BackendDevelopment #Microservices #SystemDesign #Java #SpringBoot #Logging #SoftwareEngineering #CleanCode
To view or add a comment, sign in
-
🚀How @Transactional works behind the scenes in Spring 🤔 I created this visual to break it down simply 👇 🔹 How @Transactional works behind the scenes 🔹 Proxy Design Pattern (JDK vs CGLIB) 🔹 AOP magic (Before → After → Exception) 🔹 Complete internal execution flow 🔹 Common mistakes (self-invocation, private methods, exceptions) 🔹 Propagation behaviors (REQUIRED, REQUIRES_NEW, NESTED, etc.) 🔹 Isolation levels (READ_COMMITTED → SERIALIZABLE) 💡 Key Takeaway: It’s not magic — Spring uses Proxy + AOP + Transaction Manager to manage transactions seamlessly. ⚠️ Real-world tip: If your transaction is not working, always check: ✔️ Is method called via proxy? ✔️ Correct propagation level? ✔️ Proper exception handling? #Java #SpringBoot #Transactional #AOP #BackendDevelopment #Microservices
To view or add a comment, sign in
-
-
#Day21 🧠 Multithreading Design Patterns — thinking beyond threads Multithreading isn’t just about creating threads — it’s about designing systems 💡 Some key patterns I explored today: 👉 Producer–Consumer → task queues 👉 Thread Pool → reuse threads 👉 CompletableFuture → async pipelines 👉 ThreadLocal → per-thread data 👉 Immutable objects → thread safety Example 👇 ExecutorService executor = Executors.newFixedThreadPool(3); executor.submit(() -> System.out.println("Task running")); 💡 Choosing the right pattern makes your system scalable and safe #Java #Multithreading #DesignPatterns #Concurrency #JavaDeveloper #SystemDesign #InterviewPreparation #LearningInPublic
To view or add a comment, sign in
-
🚀 Day 97/100 - Spring Boot - Event-Driven Communication with ApplicationEventPublisher In real world applications, not everything needs direct method calls... We often want loose coupling between components. That’s where Event Driven Communication comes in... ➡️ What is Event-Driven Approach? 🔹One component publishes an event 🔹Other components listen and react 🔹No tight dependency between them See attached image 👇 for architectural flow ➡️ Why Event Driven Architecture is Appreciated? 🔹It decouples components 🔹Improves scalability 🔹Provides cleaner architecture 🔹Easy to extend (you can add more listeners anytime) ➡️ How to create CustomEvents and listen to them? (will be covered in next post) Previous post - Configuration Server in Microserices: https://lnkd.in/dbvU7U7U #100Days #SpringBoot #EventDriven #Java #Microservices #BackendDevelopment #SoftwareEngineering
To view or add a comment, sign in
-
More from this author
-
The Main Thread Weekly, CW 13: Testing MCP Servers, Taming Kubernetes, and Making Java Systems Agent-Ready
Markus Eisele 1mo -
The Main Thread Weekly, CW 12 / 2026 - Performance, identity, and shipping real tools
Markus Eisele 1mo -
Platforms, safety nets, and the quiet details that keep systems alive - CW 11
Markus Eisele 1mo
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development