Bird
Raised Fist0
Spring Bootframework~5 mins

@Autowired for dependency injection in Spring Boot - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the @Autowired annotation do in Spring Boot?

@Autowired tells Spring to automatically provide the needed object (dependency) to a class. It helps connect parts of your app without manual setup.

Click to reveal answer
beginner
Where can you use @Autowired in a Spring Boot class?

You can use @Autowired on fields, constructors, or setter methods to inject dependencies automatically.

Click to reveal answer
intermediate
Why is constructor injection with @Autowired preferred over field injection?

Constructor injection makes dependencies clear and helps with testing. It also ensures the object is fully ready when created.

Click to reveal answer
intermediate
What happens if Spring finds multiple beans of the same type when using @Autowired?

Spring throws an error because it doesn't know which bean to inject. You can fix this by using @Qualifier to specify the bean.

Click to reveal answer
intermediate
How can you make a dependency optional with @Autowired?

You can set required = false in @Autowired(required = false) so Spring won't fail if the bean is missing.

Click to reveal answer
What is the main purpose of @Autowired in Spring Boot?
ATo create new beans manually
BTo automatically inject dependencies
CTo configure database connections
DTo handle HTTP requests
Which of these is NOT a valid place to use @Autowired?
AOn a constructor
BOn a setter method
COn a local variable inside a method
DOn a field
If multiple beans of the same type exist, how can you specify which one to inject?
AUse <code>@Qualifier</code>
BUse <code>@Component</code>
CUse <code>@Service</code>
DUse <code>@Repository</code>
What does setting @Autowired(required = false) do?
ADisables dependency injection
BForces Spring to always inject the bean
CCreates a new bean instance
DMakes the dependency optional
Why is constructor injection recommended over field injection?
AIt makes dependencies explicit and helps testing
BIt requires less code
CIt allows private fields to be injected
DIt disables dependency injection
Explain how @Autowired works for dependency injection in Spring Boot and where you can use it.
Think about how Spring connects parts of your app without manual setup.
You got /3 concepts.
    Describe what happens if Spring finds multiple beans of the same type when using @Autowired and how to resolve it.
    Imagine Spring is confused about which object to give you.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the @Autowired annotation in Spring Boot?
      easy
      A. To create a new thread
      B. To define a REST endpoint
      C. To configure database connections
      D. To automatically inject dependencies into a class

      Solution

      1. Step 1: Understand the role of @Autowired and identify the correct purpose

        @Autowired is used to automatically provide the needed objects (dependencies) to a class without manual creation. It helps Spring Boot inject required components, making code cleaner and easier to maintain.
      2. Final Answer:

        To automatically inject dependencies into a class -> Option D
      3. Quick Check:

        @Autowired = automatic dependency injection [OK]
      Hint: Remember: @Autowired links needed parts automatically [OK]
      Common Mistakes:
      • Confusing @Autowired with REST endpoint annotations
      • Thinking @Autowired manages database setup
      • Assuming @Autowired creates new threads
      2. Which of the following is the correct way to use @Autowired for field injection in a Spring Boot class?
      easy
      A. private Service service @Autowired;
      B. @Autowired private Service service;
      C. Service @Autowired service;
      D. private @Autowired Service service;

      Solution

      1. Step 1: Recall field injection syntax and match correct syntax

        The @Autowired annotation is placed before the field declaration with its access modifier. @Autowired private Service service; correctly places @Autowired before the field type and name.
      2. Final Answer:

        @Autowired private Service service; -> Option B
      3. Quick Check:

        @Autowired before field = correct syntax [OK]
      Hint: Put @Autowired right before the field declaration [OK]
      Common Mistakes:
      • Placing @Autowired after the field name
      • Putting @Autowired between type and variable name
      • Missing access modifier with @Autowired
      3. Given the code below, what will be the output when myController.printServiceName() is called?
      
      @Service
      public class MyService {
          public String getName() { return "ServiceA"; }
      }
      
      @RestController
      public class MyController {
          @Autowired
          private MyService myService;
      
          public void printServiceName() {
              System.out.println(myService.getName());
          }
      }
      
      medium
      A. ServiceA
      B. null
      C. Compilation error
      D. Runtime NullPointerException

      Solution

      1. Step 1: Understand @Autowired effect and trace method call output

        Spring Boot injects an instance of MyService into MyController automatically. Calling getName() on injected myService returns "ServiceA" which is printed.
      2. Final Answer:

        ServiceA -> Option A
      3. Quick Check:

        Injected service returns "ServiceA" [OK]
      Hint: Autowired injects instance, so method returns actual value [OK]
      Common Mistakes:
      • Assuming myService is null without injection
      • Thinking code causes compilation error
      • Expecting NullPointerException due to missing initialization
      4. What is wrong with the following Spring Boot code snippet?
      
      @Service
      public class UserService {
          private Repository repo;
      
          @Autowired
          public void setRepo(Repository repo) {
              this.repo = repo;
          }
      }
      
      @RestController
      public class UserController {
          @Autowired
          private UserService userService;
      
          public void doSomething() {
              userService.repo.save();
          }
      }
      
      medium
      A. Field 'repo' in UserService is private and cannot be accessed directly
      B. Missing @Autowired on UserService constructor
      C. UserController should not use @Autowired on fields
      D. Repository interface is not annotated with @Service

      Solution

      1. Step 1: Check access to 'repo' field and identify cause of error

        The 'repo' field in UserService is private and cannot be accessed directly from UserController. Calling userService.repo.save() causes a compilation error due to private access.
      2. Final Answer:

        Field 'repo' in UserService is private and cannot be accessed directly -> Option A
      3. Quick Check:

        Private fields can't be accessed outside class [OK]
      Hint: Private fields need getters; direct access causes error [OK]
      Common Mistakes:
      • Assuming @Autowired must be on constructor only
      • Thinking field injection is disallowed in UserController
      • Confusing Repository annotation requirements
      5. You want to inject two different implementations of an interface PaymentService into a controller using @Autowired. How can you specify which implementation to inject?
      hard
      A. Rename one implementation class to avoid conflict
      B. Use @Autowired twice on the same field
      C. Use @Qualifier annotation with the bean name along with @Autowired
      D. Use @Autowired(required=false) to ignore one implementation

      Solution

      1. Step 1: Understand multiple bean injection and use @Qualifier to specify bean

        When multiple beans implement the same interface, Spring needs help to know which one to inject. Adding @Qualifier with the bean name tells Spring exactly which implementation to use.
      2. Final Answer:

        Use @Qualifier annotation with the bean name along with @Autowired -> Option C
      3. Quick Check:

        @Qualifier + @Autowired = select specific bean [OK]
      Hint: Use @Qualifier to pick the right bean when multiple exist [OK]
      Common Mistakes:
      • Trying to use @Autowired twice on one field
      • Renaming classes doesn't solve injection ambiguity
      • Using required=false hides errors but doesn't select bean
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard