Types of Dependencies in Spring - Primitive, Collection & Reference🕶️🚀 While working with Dependency Injection in Spring, understanding the types of dependencies is essential for building flexible and loosely coupled applications. Spring mainly supports three types of dependencies: Primitive Dependency📁 This includes simple data types such as int, double, boolean, and String. These values are directly injected into a bean using configuration (XML or annotations). It is mainly used for basic configuration values. Collection Dependency Spring allows injecting collections like List, Set, and Map. This is useful when a bean needs multiple values or a group of objects. For example, injecting a list of subjects or a map of key-value configurations. Reference Dependency This is used to inject one object (bean) into another bean. It helps in achieving loose coupling by allowing one class to depend on another through Spring configuration instead of creating objects manually. In simple terms: Primitive Basic values Collection Group of values Reference Object-to-object dependency Understanding these dependency types helps in designing scalable, maintainable, and loosely coupled applications in Spring Framework. Mastering Dependency Injection is a key step toward becoming a strong Java backend developer💥 Thank you Sir Anand Kumar Buddarapu #Java #Spring #DependencyInjection #BackendDevelopment #Programming #TechLearning #SoftwareDevelopment
dileep kumar maddineti’s Post
More Relevant Posts
-
Topic of the day Java Memory Management? 💡 Java Memory Management Understanding JVM memory becomes easy when you connect it with real code 🔹 1. Heap Memory (Objects Storage) This is where all objects are created and stored. 👉 Example: Student s = new Student(); ✔ new Student() → object is created in Heap ✔ s (reference) → stored in Stack 📌 Real-time: Like storing data in a database, Heap holds actual objects. 🔹 2. Stack Memory (Method Execution) Each thread has its own stack which stores method calls and local variables. 👉 Example: public void display() { int x = 10; } ✔ display() method → pushed into Stack ✔ x → stored in Stack ✔ After method ends → removed automatically 📌 Real-time: Like a call stack in your mobile – recent calls come and go. 🔹 3. Method Area / Metaspace (Class-Level Data) Stores class metadata, static variables, and constant pool. 👉 Example: class Test { static int count = 100; } ✔ count → stored in Method Area ✔ Class structure → also stored here 📌 Real-time: Like a blueprint shared across the entire application. 🔹 4. PC Register (Program Counter) Keeps track of the current instruction of a thread. 👉 Example: System.out.println("Hello"); System.out.println("Java"); ✔ PC Register tracks which line is currently executing 📌 Real-time: Like a cursor pointing to the current line in your code editor. 🔹 5. Native Method Stack (JNI Execution) Used when Java interacts with native (C/C++) code. 👉 Example: System.loadLibrary("nativeLib"); ✔ Native methods execution handled here 📌 Real-time: Like calling an external system/service from your application. 🧠 Quick Revision Trick: Objects → Heap Variables & Methods → Stack Static & Class Info → Method Area Execution Line → PC Register External Code → Native Stack #Java #JVM #MemoryManagement #JavaDeveloper #Backend #Coding #Programming #SpringBoot #Coding
To view or add a comment, sign in
-
🚀 Spring Core Concepts Simplified: Dependency Injection & Bean Loading While diving deeper into Spring Framework, I explored two important concepts that every Java developer should clearly understand 👇 🔹 Dependency Injection (DI) Spring provides multiple ways to inject dependencies into objects: ✅ Setter Injection Uses setter methods Flexible and optional dependencies Easier readability ✅ Constructor Injection Uses constructors Ensures mandatory dependencies Promotes immutability & better design 💡 Key Difference: Constructor Injection is preferred when dependencies are required, while Setter Injection is useful for optional ones. 🔹 Bean Loading in Spring Spring manages object creation using two strategies: 🗨️ Eager Initialization (Default) Beans are created at container startup Faster access later May increase startup time 🗨️ Lazy Initialization Beans are created only when needed Saves memory & startup time Slight delay on first use 🔍 When to Use What? ✔ Use Constructor Injection → when dependency is mandatory ✔ Use Setter Injection → when dependency is optional ✔ Use Eager Loading → for frequently used beans ✔ Use Lazy Loading → for rarely used beans 📌 Understanding these concepts helps in writing cleaner, maintainable, and scalable Spring applications. #SpringFramework #Java #BackendDevelopment #DependencyInjection #CodingJourney #TechLearning
To view or add a comment, sign in
-
I spent years writing Java 8 code. Turns out I was only using about 20% of what it could do. Here are 9 Java 8 features that changed how I write code — swipe through the carousel to see all of them with real before/after examples. 👇 ― Most devs stop at lambdas and streams. Fair. They're great. But there's a whole layer underneath that nobody talks about: → Collectors that group, count, and join data in one line → Optional that chains safely instead of crashing on null → CompletableFuture that makes async code actually readable → Map methods that eliminate 6-line "check then insert" patterns → Predicate chaining that turns filter logic into reusable building blocks These aren't niche. They're in every modern Java codebase. ― The one that hit me hardest? computeIfAbsent. Before I found it, I was writing this every time: if (!map.containsKey(key)) { map.put(key, new ArrayList<>()); } map.get(key).add(value); After: map.computeIfAbsent(key, k -> new ArrayList<>()).add(value); Same logic. One line. No cognitive overhead. That's what Java 8 does when you actually use it. ― Swipe through the carousel for all 11 tricks — each slide has a concrete code example so you can start using it today. Save it for your next code review. 🔖 If you've been writing Java for a while and one of these was new to you — drop it in the comments. Curious which ones land. ― ♻️ Repost if this would help someone on your team. 🔔 Follow for more posts like this every week. #Java #Java8 #JavaDeveloper #JavaProgramming #SoftwareDevelopment #SoftwareEngineering #CleanCode #BackendDevelopment #BackendEngineering #Programming #Coding #CodeNewbie #100DaysOfCode #DevTips #TechTips #LearnToCode #OpenSource #SpringBoot #Microservices #Tech
To view or add a comment, sign in
-
Understanding Java Class Loading & Memory Areas Today, I learned how Java manages memory during Class Loading. It helped me understand what happens behind the scenes when a program runs. Simple Example: class Demo { static int x = 10; // Stored in Method/Class Area void show() { int y = 5; // Stored in Stack System.out.println(x + y); } } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // Object stored in Heap obj.show(); } } **When this program runs: 1.Class is loaded into Method Area 2.Static variable (x) is initialized once 3.Object (obj) is created in Heap 4.Method execution happens in Stack #Java #Programming #LearningJourney #SDLC #Coding #Developer #CareerGrowth
To view or add a comment, sign in
-
-
💡 𝗛𝗼𝘄 𝗝𝗮𝘃𝗮 𝗪𝗼𝗿𝗸𝘀 𝗨𝗻𝗱𝗲𝗿 𝘁𝗵𝗲 𝗛𝗼𝗼𝗱 — 𝗙𝗿𝗼𝗺 𝗖𝗼𝗱𝗲 𝘁𝗼 𝗘𝘅𝗲𝗰𝘂𝘁𝗶𝗼𝗻 Ever wondered what happens when you run a Java program? Here’s a simple breakdown: 1️⃣ 𝗪𝗿𝗶𝘁𝗲 𝗖𝗼𝗱𝗲 You write Java source code in a `.java` file. 2️⃣ 𝗖𝗼𝗺𝗽𝗶𝗹𝗲 The Java compiler (`javac`) converts `.java` file into **bytecode** (`.class` file). 3️⃣ 𝗖𝗹𝗮𝘀𝘀 𝗟𝗼𝗮𝗱𝗲𝗿 JVM loads the `.class` bytecode into memory. 4️⃣ 𝗕𝘆𝘁𝗲𝗰𝗼𝗱𝗲 𝗩𝗲𝗿𝗶𝗳𝗶𝗲𝗿 Checks for security issues and ensures code follows Java rules. 5️⃣ 𝗘𝘅𝗲𝗰𝘂𝘁𝗶𝗼𝗻 JVM executes bytecode using: • Interpreter (line by line execution) • JIT Compiler (converts to native machine code for faster performance) 👉 Flow: Java Code → Compiler → Bytecode → JVM → Machine Code → Output ✨ This is why Java is platform independent: "Write Once, Run Anywhere" #Java #JVM #Programming #JavaDeveloper #Coding #SoftwareDevelopment #TechLearning
To view or add a comment, sign in
-
-
🚉 Trains Run on Many Tracks… Java Runs on Many Threads. ☕⚡ In real life, multiple trains move on different tracks at the same time. In Java, multiple tasks can run simultaneously using Threads 👇 🔹 What is a Thread? A thread is the smallest unit of execution inside a program. 💡 One Java application can run multiple threads together. 🔹 Main Thread in Java Every Java program starts with one Main Thread. public static void main(String[] args) From there, additional threads can be created. 🔹 How to Create Threads? ✔ Extend Thread class ✔ Implement Runnable interface ✔ Use Executor Framework 🔹 Why Multithreading Matters ✔ Faster performance ✔ Better responsiveness ✔ Background tasks execution ✔ Handles multiple users efficiently 🔹 Real Examples 🚆 Downloading file while UI works 🚆 Web server handling many requests 🚆 Sending emails in background 🚆 Payment processing simultaneously 🔹 Important Concepts ✔ Synchronization ✔ Race Conditions ✔ Deadlock Awareness ✔ Thread Safety 🔹 Simple Rule: Trains → Run on many tracks Java → Runs on many threads 🚀 Smart developers don’t just write code… they optimize execution too. #Java #Multithreading #Threads #JavaDeveloper #Programming #Coding #SoftwareEngineering #BackendDeveloper #JavaInterview #SpringBoot
To view or add a comment, sign in
-
-
I recently explored a subtle but important concept in Java constructor execution order. Many developers assume constructors simply initialize values, but the actual lifecycle is more complex. In this article, I explain: • The real order of object creation • Why overridden methods can behave unexpectedly • A common bug caused by partial initialization This concept is especially useful for interviews and writing safer object-oriented code. Medium Link: https://lnkd.in/gtRhpdfP #Java #OOP #SoftwareDevelopment #Programming
To view or add a comment, sign in
-
Mastering Java starts with understanding the basics. ☕ Every strong Java developer begins with syntax — classes, methods, variables, conditions, and loops form the foundation of problem-solving in Java. This visual covers key beginner concepts like: ✔ Class & Main Method ✔ Variables and Data Types ✔ Conditional Statements (if) ✔ Loops (for) ✔ Output Statements (System.out.println) Building a solid foundation in core syntax is the first step toward advanced topics like OOP, Collections, Spring Boot, and Full Stack Development. 🚀 #Java #JavaProgramming #CodingForBeginners #SoftwareDevelopment #ProgrammingBasics #JavaDeveloper #LearnToCode #TechEducation #BackendDevelopment #DevelopersJourney
To view or add a comment, sign in
-
-
Day 14/60 🚀 Extends Thread vs Implements Runnable — Clear Comparison In Java multithreading, there are two main ways to create a thread: 👉 Extending the "Thread" class 👉 Implementing the "Runnable" interface This comparison highlights the key differences 👇 --- 💡 When you extend the Thread class 🔹 You cannot extend another class (Java doesn’t support multiple inheritance) 🔹 Task logic and thread execution are tightly coupled 🔹 Code reusability is limited 🔹 Slight overhead due to additional Thread methods 🔹 Maintenance becomes harder as code grows 👉 Best suited for simple or quick implementations --- 💡 When you implement Runnable interface 🔹 You can still extend another class 🔹 Task and thread are loosely coupled 🔹 Better code reusability (same task can run in multiple threads) 🔹 No unnecessary overhead 🔹 Easier to maintain and scale 👉 Preferred in real-world applications --- 🔥 Core Idea Both approaches ultimately execute the same method: ➡️ "run()" But the difference lies in design flexibility and scalability --- ⚖️ Simple Conclusion ✔ Use Thread → when simplicity matters ✔ Use Runnable → when flexibility, scalability, and clean design matter --- 📌 One-line takeaway: Runnable focuses on task, Thread focuses on execution --- #Java #Multithreading #CoreJava #Thread #Runnable #JavaDeveloper #Programming #SoftwareEngineering #BackendDevelopment #Concurrency #TechConcepts #CodingJourney #DeveloperLife #InterviewPreparation #FreshersJobs #LearnJava #100DaysOfCode #WomenInTech #CareerGrowth #LinkedInLearning #CodeNewbie
To view or add a comment, sign in
-
-
Most Java devs write code every day without knowing what happens beneath it. This one diagram changed how I think about Java forever. 👇 Here's the complete internal working of the JVM + Garbage Collector — explained visually: 🔵 Class Loader → Loads your .class bytecode. Verifies it. Prepares it. Resolves it. All before execution begins. 🟣 Method Area → Stores class-level data, static variables & method code. Shared across all threads. 🟠 Heap (The heart of GC) ↳ Young Gen (Eden + Survivor) → New objects born here ↳ Old Gen → Long-lived objects promoted here ↳ Metaspace → Class metadata (replaced PermGen in Java 8+) 🟢 JVM Stack → Every thread gets its own stack. Every method call = one Stack Frame. 🔴 Execution Engine ↳ Interpreter → reads bytecode (slow start) ↳ JIT Compiler → converts hot code to native (blazing fast) ↳ Garbage Collector → watches Heap, frees dead objects automatically ♻️ Repost to help a Java developer in your network. Someone needs this today. #Java #JVM #GarbageCollection #JavaDeveloper #BackendDevelopment #SpringBoot #InterviewPrep #JavaInterview #Microservices #SoftwareEngineering #Coding #Programming
To view or add a comment, sign in
-
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