JFinal框架也整合了Spring框架,下面实现JFinal怎么去配置Spring框架。在JFinal中整合Spring使用到的类是SpringPlugin和IocInterceptor类
SpringIplugin类:
SpringPlugin 是作为 JFinal 的 Plugin 而存在的,所以使用时需要在 JFinalConfig 中配置SpringPlugin,以下是 Plugin 配置示例代码:
@Override public void configPlugin(Plugins me) {
<span style="white-space:pre"> </span>//配置Spring挂件 me.add(new SpringPlugin()); }
若创建 SpringPlugin 对 象 时 未 指 定 构 造 方 法 中 的 形 参 , SpringPlugin 将 自动去WebRoot/WEB-INF 目录下寻找 applicationContext.xml 作为配置文件进行初始化。您还可以通过另外两个构造方法指定配置文件或 ApplicationContext 对象。
以前学习Spring养成了习惯将Spring的配置放在src下,这里我还是放在src的spring包中,如下:
@Override public void configPlugin(Plugins me) { //配置Spring挂件, 自动找spring包中所有的xml配置文件 me.add(new SpringPlugin("classpath*:spring/*.xml")); }IocInterceptor类:
IocInterceptor 拦截 action 并对其进行依赖注入,以下是示例代码:
package com.tenghu.core.controller; import java.util.List; import com.jfinal.aop.Before; import com.jfinal.core.Controller; import com.jfinal.plugin.spring.Inject; import com.jfinal.plugin.spring.IocInterceptor; import com.tenghu.core.model.Users; import com.tenghu.core.service.LoginService; import com.tenghu.core.validator.LoginValidator;
@Before(IocInterceptor.class) public class IndexController extends Controller{ @Inject.BY_NAME private LoginService loginService; public void index(){ List<Users> testList=Users.dao.find("select * from users"); setAttr("testList", testList); render("login.html"); } public void login(){ String username=getPara("name"); String password=getPara("password"); if(loginService.login(username, password)){ renderText("登录成功"); }else{ renderText("登录失败"); } } }上例将对 loginService 按属性名称进行注入。注解@Inject.BY_NAME 按属性名进行注入,@Inject.BY_TYPE 按类型进行注入。不指定注入类型时将不会进行注入。
登录服务接口与实现类:
package com.tenghu.core.service; public interface LoginService { /** * 登录处理 */ public boolean login(String username,String password); }
package com.tenghu.core.service.impl; import com.tenghu.core.service.LoginService; public class LoginServiceImpl implements LoginService{ /** * 登录处理 */ public boolean login(String username, String password) { if("admin".equals(username)&&"admin".equals(password)){ return true; } return false; } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
<span style="white-space:pre"> default-autowire="byName"</span>> <bean id="loginService" class="com.tenghu.core.service.impl.LoginServiceImpl"/> </beans>配置完成