18.02.2013
JSF2: внедрение бина Spring в JSF managed bean.
Когда в JSF managed bean внедряется зависимость в виде другого managed bean - это указывается или с помощью аннотаций, или в файле managed-beans.xml. В JSF 2 рекомендуется использовать аннотации, и мне тоже кажется что это более удобный подход - отпадает небходимость в еще одном XML файле настроек, аннотации это наглядно - все сразу видно при просмотре исходного кода класса.
Вот пример DI в стиле аннотаций, допустим TestData - JSF managed bean, названный testDataBean внедряется как свойство для testBean:
package test; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; @ManagedBean(name = "testBean") @SessionScoped public class TestBean { @ManagedProperty(value="#{testDataBean}") private TestData testData; public TestData getTestData() { return testData; } public void setTestData(TestData value) { testData = value; } }
Но зачастую, нужно внедрить в JSF managed bean не другой JSF managed bean, а бин, который конфигурируется и создается с помощью Spring Framework. Для того чтобы это сработало, нужно указать в /WEB-INF/faces-config.xml:
<application> <el-resolver> org.springframework.web.jsf.el.SpringBeanFacesELResolver </el-resolver> </application>
Теперь testDataBean может быть и бином, создаваемым Spring.
Теги: javaEE jsf
comments powered by Disqus