Quantcast
Channel: OmniFaces & JSF Fans
Viewing all articles
Browse latest Browse all 74

CDI-JSF: Use @Inject to annotate a common method of a bean

$
0
0
As you probably know, when a bean is instantiated the first called method is the corresponding constructor. Afterwards, we have the method annotated with @PostConstruct. When this method is called we say that the dependency injections is done and we can exploit the injected artifacts. By annotating a common method with @Inject, we basically instruct CDI to call this method also when the bean in instantiated. For example, the below initFooBuzzBizz() is called after the constructor, but before the @PostConstruct:

@Named
@RequestScoped
public class TheBean {

 private static final Logger LOG = Logger.getLogger(TheBean.class.getName());

 public TheBean() {
  LOG.info("TheBean#constructor called ...");
  Messages.addGlobalInfo("TheBean#constructor called ...");
 }

 @PostConstruct
 public void init() {
  LOG.info("TheBean#init() called ...");
  Messages.addGlobalInfo("TheBean#init() called ...");
 }

 public void callFooBuzzBizzAction() {
  LOG.info("TheBean#callFooBuzzBizz() called ...");
  Messages.addGlobalInfo("TheBean#callFooBuzzBizz() called ...");
 }

 @Inject
 private void initFooBuzzBizz(Foo foo, Buzz buzz, Bizz bizz) {
  LOG.info("TheBean#initFooBuzzBizz() called ...");
  Messages.addGlobalInfo("TheBean#initFooBuzzBizz() called ...");

  foo.fooify();
  buzz.buzzify();
  bizz.bizzify();
 }
}

The output will be:
  • TheBean#constructor called ...
  • TheBean#initFooBuzzBizz() called ...
  • Foo#fooify() called ...
  • Buzz#buzzify() called ...
  • Bizz#bizzify() called ...
  • TheBean#init() called ...
  • TheBean#callFooBuzzBizz() called ...
The complete example is available here,

Viewing all articles
Browse latest Browse all 74

Trending Articles