CDI beans, according to the specification, are described to be contextual. By contextual it's meant that each CDI bean has a well-defined scope that it lives in. A scope describes the lifetime of the bean, that is, when the CDI bean shall be created and when it shall be destroyed. To make this more clear, consider the earlier examples where we have injected our beans into a servlet. The question is: will I obtain the same instance of the bean each time I run the example? Or will I obtain a new instance each time? Or one instance per user? Or what? The basic answer to all these questions, is specifying our bean scope.
One of the most popular examples of a bean scope that I'm pretty sure you have a prior knowledge of the singleton pattern. In this pattern, some class is supposed to have one, and only one, an instance of it in runtime. It should...