Bean, any Spring-managed resource is referred to as a bean. Beans can utilize any interface implementation to satisfy their dependency.
Interfaces - The use of interfaces also allows Spring to utilize JDK dynamic proxies (the Proxy pattern) to provide powerful concepts such as aspect-oriented programming (AOP) for crosscutting concerns.
Dependency injection (DI), a concept that describes how dependent objects are connected at runtime by an external party. The DI implementation is based on JavaBeans and Interfaces.
Inversion of Control (IoC), is a design principle in which generic reusable components are used to control the execution of problem-specific code, as in retrieving dependencies.
Aspect-oriented programming (AOP), provides the ability to implement crosscutting logic — that is, logic that applies to many parts of your application — in a single place and to have that logic applied across your application automatically.