Mixing Annotations with faces-config.xml Settings in JSF 2.0

What happens when you annotate a bean, and edit the configuration in the faces-config.xml file at the same time?

With JavaServer Faces 2.0, we finally see the introduction of a standard, annotation based approach to component development. No longer do your JSF applications need to maintain a long and arduous faces-config.xml file. Instead, you can simply annotate your JavaBeans, and the JSF framework will manage your beans accordingly.


So, to have the JSF framework recognize a JavaBean, and manage the lifecycle of that instance, here’s how simple the annotation is:


public class SuperBean { /* stuff goes in here */}


And you can further annotate. So if you wanted the bean to be managed in the request scope, you simply add another annotation:


public class SuperBean { /* stuff goes in here */}  


And all of this replaces the need for a faces-config.xml file such as the following:


<?xml version='1.0' encoding='UTF-8'?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"











Of course, the question always arises as to what happens if you both annotate the POJO, and you have a configuration in the faces-config.xml file. Well, at runtime, the faces-config.xml file trumps any annotations. So, if you have a bean whose behavior you want to change, but you can’t get in and edit the source code, all you have to do is configure a faces-config.xml file, and the corresponding settings will take precedence at runtime.

This was last published in December 2010

Dig Deeper on Java server faces

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.