JSF本身对于Bean的管理有依赖注入的功能,不过Spring的IOC容器能提供更多的功能,另一方面Spring还有AOP框架,在事务处理上也可提供协助
JSF 和Spring结合,主要目的就是让Spring的Bean名称可以被JSF视<managed-bean-name>标签上的名称来使用,也就是说可以当JSF定义文件中根据名称要求Bean实例时,若JSF 在自己的Context中找不到名称,可以尝试到Spring的Context中去寻找.
---------------------------------------------------------------------JSF配置文件
<managed-bean>
<description>
The "backing file" bean that backs up the guessNumber webapp
</description>
<managed-bean-name>UserNumberBean</managed-bean-name>
<managed-bean-class>guessNumber.UserNumberBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>minimum</property-name>
<property-class>int</property-class>
<value>1</value>
</managed-property>
<managed-property>
<property-name>maximum</property-name>
<property-class>int</property-class>
<value>10</value>
</managed-property>
<managed-property>
<property-name>rnManager</property-name>
<value>#{randomNumManager}</value>
</managed-property>
</managed-bean>
---------------------------------------------------------------------Spring配置文件
<bean id="randomNumManager" class="guessNumber.RandomNumManager">
</bean>
<bean id="UserNumberBean" class="guessNumber.UserNumberBean">
<property name="minimum" value="1"></property>
<property name="maximum" value="10"></property>
<property name="rnManager" ref="randomNumManager"></property>
</bean>
集成后上述JSF配置文件中可以放到spring配置文件中做配置。
%%%%%配置要点
1-- Spring配置文件
<application>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>
实际上在JSF的定义文件中并没有定义UserNumberBean的bean实例,当JSF找不到UserNumberBean时候,会使用DelegatingVariableResolver对象在Spring的Context中寻找同名的bean实例
2--web.xml
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
3--jar包及其他
建议使用spring2..5相应库文件及Tomcat6