linkedin.
com/in/sahaidachnyi
TARAS SAHAIDACHNYI
WHAT IS @AUTOWIRED?
S P R I N G I N T E R I V E W Q U E S T I O N S
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
The @Autowired annotation marks a
dependency to be automatically injected by
Spring's IoC container.
Instead of manually instantiating objects using
the new keyword, you let Spring handle the
lifecycle and injection of the dependency.
It can be used with:
Constructor injection
Setter injection
Field injection
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
ENABLING
@AUTOWIRED IN SPRING
For Spring to recognize the @Autowired
annotation, you must enable component
scanning in your Spring configuration.
This ensures that Spring scans your packages
for classes annotated with @Component,
@Service, @Repository, etc., and manages
them as Spring beans.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
EXAMPLE:
In a Spring Boot application, component
scanning is enabled by default with
@SpringBootApplication.
In a non-Boot application, enable it manually
like this:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
TYPES OF DEPENDENCY INJECTION WITH @AUTOWIRED
CONSTRUCTOR INJECTION
Injects dependencies through the class
constructor.
Pros:
Ensures immutability since dependencies
are final and cannot be changed after the
object is created.
Guarantees that dependencies are not null
during object creation.
Best practice for dependency injection.
Cons:
Requires a constructor for every
dependency.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
TYPES OF DEPENDENCY INJECTION WITH @AUTOWIRED
CONSTRUCTOR INJECTION
Example:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
TYPES OF DEPENDENCY INJECTION WITH @AUTOWIRED
SETTER INJECTION
Injects a dependency through a setter method.
Pros:
Easier to test by providing mock
dependencies via setter methods.
Supports optional dependencies.
Cons:
Dependencies can be modified after the
object is constructed, which might lead to
bugs.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
TYPES OF DEPENDENCY INJECTION WITH @AUTOWIRED
SETTER INJECTION
Example:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
TYPES OF DEPENDENCY INJECTION WITH @AUTOWIRED
FIELD INJECTION
Injects a dependency directly into a field.
Pros:
Quick and easy to implement.
Cons:
Harder to test because the dependency is
private.
Does not support immutability since the
dependency is directly injected into the field.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
TYPES OF DEPENDENCY INJECTION WITH @AUTOWIRED
FIELD INJECTION
Example:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
USING @AUTOWIRED WITH QUALIFIERS
When multiple beans of the same type exist in
the Spring container, Spring may not know
which one to inject.
This leads to an error like
"No qualifying bean of type found".
To resolve this, you can use the @Qualifier
annotation to specify the exact bean name.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
USING @AUTOWIRED WITH QUALIFIERS
Example:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
OPTIONAL DEPENDENCIES
Sometimes, you may want a dependency to be
optional.
You can use the
@Autowired(required = false)
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
USING @AUTOWIRED WITH COLLECTIONS
Spring can inject multiple beans into a collection
(e.g., List, Set, or Map) when you need all beans
of a certain type.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
@AUTOWIRED
AND CIRCULAR DEPENDENCIES
Spring automatically detects circular
dependencies where two or more beans
depend on each other.
Circular Dependency Example:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
@AUTOWIRED
AND CIRCULAR DEPENDENCIES
Solutions:
1. Refactor Code and break the circular
dependency by redesigning the relationship
2. Use @Lazy to delay the initialization of one of
the beans, like in the example below:
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
BEST PRACTICES
Prefer Constructor Injection
It ensures immutability and makes the code
easier to test.
Avoid Field Injection
While it’s simple, it’s not ideal for testing and
violates immutability.
Use @Qualifier When Necessary
Specify the exact bean when there are multiple
candidates.
Validate Dependencies
Check for null dependencies or use @Required
or constructor injection to ensure required
dependencies are present.
Avoid Circular Dependencies
Refactor your code to avoid circular references.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
COMMON ISSUES WITH @AUTOWIRED
1. No qualifying bean found
Cause: No bean of the required type exists in
the Spring container.
Solution: Ensure the bean is annotated with
@Component, @Service, etc., or is explicitly
defined in the configuration.
2. Multiple beans found
Cause: More than one bean of the required
type exists.
Solution: Use @Qualifier to specify which bean
to inject.
3. Null dependency
Cause: The bean is not being scanned or is not
part of the Spring context.
Solution: Ensure proper component scanning
and configuration.
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
Every like, comment,
and subscriptions are important
Thank you
for your attention!
linkedin.com/in/sahaidachnyi
TARAS SAHAIDACHNYI
Join the LinkedIn Java Community
Link in the description