JSF2.0与Spring3的整合

关于JSF与EJB的整合资料比较少,没找到。

所以以普及度很高的spring为例。

步骤是非常简单的,主要有两条思路一是让所有的beanJSF的@ManagedBean和spring的@Component各自分管,经过实验他们之间的注入依赖在同一个bean里不能混用。比如如果class是@ManagedBean如果field上@Resource就会出错。只能用@ManagedProperty(value="#{xxxServiceImpl}")这样注入。而且当在class上同时@ManagedBean@Component是@ManagedBean更加优先。

第一步:

web.xml开发环境下的配置

<!-- spring启动监视器 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:beans.xml</param-value>

</context-param>

<!-- jsf额外需要的spring监视器 -->

<listener>

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

</listener>

<!-- JSF2.0的配置-->

<servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>*.jsf</url-pattern>

</servlet-mapping>

<!-- JSF2.0的模式配置,开发模式下会在调试时报更加详细的错误-->

<context-param>

<param-name>javax.faces.PROJECT_STAGE</param-name>

<param-value>Development</param-value>

</context-param>

第二步:

faces-config.xml中加上

<application>

<variable-resolver>

org.springframework.web.jsf.DelegatingVariableResolver

</variable-resolver>

</application>

第三步:

在BackBean中以注解的形式添加依赖,这一步是关键步骤。

经过我的实验我得到了我认为的最佳配置BackBean的方式。

service和entity照旧由spring管理,只不过如果你不想额外增加数据传输层(DTO)的话,那么需要把实体也暴露为jsf的受管bean。

如:

实体的配置

@ManagedBean

@NoneScoped

@Entity

public class User {

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private long id;

......................略

backbean的配置

@ManagedBean

public class Hello {

@ManagedProperty(value="#{user}")

private User user;

@ManagedProperty("#{userServiceImpl}") //可见spring的bean已经暴露给了jsf了,可以由el表达式访问到的受管bean了。这是的在页面上通过el表达式直接访问sevice业务层执行一些业务操作成为了可能,虽然我不赞成这么做。

private UserService userServiceImpl;

public String run(){

System.out.println(user.getName());

userServiceImpl.save(user);

return "succ";

}

.....................略

第四步:

像原来一样配置好spring的一切就行了。

你可能感兴趣的:(spring,bean,servlet,JSF,配置管理)