What is "exposing beans"?

Exposing beans or components is making them available for other modules.

There are several ways to expose beans, but in most cases it is done by annotating the bean or its implementing class with @Exposed.

How this works

Beans are exposed by pushing a special BeanDefinition as far up the ApplicationContext hierarchy as possible. Exposing beans has no impact on the number of bean instances that will get created, it simply makes them visible in the parent ApplicationContext.

All modules have the same parent ApplicationContext, so bean definitions in the parent are available to all modules.

See the reference documentation on Exposing beans for more details.