0% found this document useful (0 votes)
12 views2 pages

Spring Core Interview Problems

The document discusses key concepts of Spring Core, focusing on Dependency Injection (DI) types, including Constructor, Setter, and Field Injection. It explains the roles of annotations like @Component, @Service, @Repository, and @Controller, as well as the differences between ApplicationContext and BeanFactory. Additionally, it covers the use of @PostConstruct and @PreDestroy annotations, circular dependency handling, and best practices for managing dependencies in Spring applications.

Uploaded by

pbecic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views2 pages

Spring Core Interview Problems

The document discusses key concepts of Spring Core, focusing on Dependency Injection (DI) types, including Constructor, Setter, and Field Injection. It explains the roles of annotations like @Component, @Service, @Repository, and @Controller, as well as the differences between ApplicationContext and BeanFactory. Additionally, it covers the use of @PostConstruct and @PreDestroy annotations, circular dependency handling, and best practices for managing dependencies in Spring applications.

Uploaded by

pbecic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Spring Core for Strong Senior Developers (Excluding Boot, Security, Data,

Cloud)

How does Spring's Dependency Injection (DI) work and what are the main
types?
 Spring DI allows objects to be injected into other objects, promoting loose coupling.
 Types of DI in Spring:
 Constructor Injection — recommended for mandatory dependencies.
 Setter Injection — useful for optional dependencies.
 Field Injection — not recommended for testability and immutability reasons.
 DI can be configured via XML, Java config (@Configuration + @Bean), or annotations
(@Component, @Autowired).

What is the difference between @Component, @Service, @Repository, and


@Controller in Spring?
 All are specializations of @Component and used for auto-detection via component
scanning.
 Differences lie in their semantic role and behaviors:
 @Component — generic stereotype for any Spring-managed bean.
 @Service — used for service layer beans; may be used by AOP for transactional
semantics.
 @Repository — used for DAO layer; enables exception translation (via
PersistenceExceptionTranslationPostProcessor).
 @Controller — used in web layer to mark controllers for Spring MVC.

How does Spring's ApplicationContext differ from BeanFactory?


 Both are Spring containers for managing beans, but ApplicationContext extends
BeanFactory.
 BeanFactory:
 Basic container with lazy initialization.
 Used in resource-constrained environments.
 ApplicationContext:
 Includes all features of BeanFactory.
 Adds support for internationalization, event propagation, annotation scanning, and AOP.
 Most applications use ApplicationContext (e.g., ClassPathXmlApplicationContext,
AnnotationConfigApplicationContext).

What is the role of @PostConstruct and @PreDestroy annotations in Spring


beans?
 @PostConstruct:
 Marks a method to be called after the bean has been constructed and dependencies
injected.
 @PreDestroy:
 Marks a method to be called before the bean is destroyed (during context shutdown).
 Useful for initializing resources or cleaning up connections.
 Alternative: implement InitializingBean and DisposableBean interfaces (not
recommended due to tight coupling with Spring APIs).

How does Spring handle circular dependencies and what are the limitations?
 Spring can resolve circular dependencies for singleton beans using setter injection.
 Mechanism:
 Spring creates early references for beans during instantiation and wires them later.
 Limitations:
 Constructor-based injection with circular dependencies results in a
BeanCurrentlyInCreationException.
 Prototype-scoped circular dependencies are not supported at all.
 Best practices:
 Refactor design to eliminate tight circular dependencies.
 Use setter injection carefully if circular structure is unavoidable.

You might also like