JFinal集成Spring

JFinal框架也整合了Spring框架,下面实现JFinal怎么去配置Spring框架。在JFinal中整合Spring使用到的类是SpringPlugin和IocInterceptor类

SpringIplugin类:

SpringPlugin 是作为 JFinal 的 Plugin 而存在的,所以使用时需要在 JFinalConfig 中配置SpringPlugin,以下是 Plugin 配置示例代码:

[html]   view plain copy
  1. @Override  
  2.     public void configPlugin(Plugins me) {  
[html]   view plain copy
  1. <span style="white-space:pre">        </span>//配置Spring挂件  
  2.         me.add(new SpringPlugin());  
  3.     }  

若创建 SpringPlugin 对 象 时 未 指 定 构 造 方 法 中 的 形 参 , SpringPlugin 将 自动去WebRoot/WEB-INF 目录下寻找 applicationContext.xml 作为配置文件进行初始化。您还可以通过另外两个构造方法指定配置文件或 ApplicationContext 对象。

以前学习Spring养成了习惯将Spring的配置放在src下,这里我还是放在src的spring包中,如下:

[html]   view plain copy
  1. @Override  
  2.     public void configPlugin(Plugins me) {  
  3.         //配置Spring挂件, 自动找spring包中所有的xml配置文件  
  4.         me.add(new SpringPlugin("classpath*:spring/*.xml"));  
  5.     }  
IocInterceptor类:
IocInterceptor 拦截 action 并对其进行依赖注入,以下是示例代码:
[html]   view plain copy
  1. package com.tenghu.core.controller;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.jfinal.aop.Before;  
  6. import com.jfinal.core.Controller;  
  7. import com.jfinal.plugin.spring.Inject;  
  8. import com.jfinal.plugin.spring.IocInterceptor;  
  9. import com.tenghu.core.model.Users;  
  10. import com.tenghu.core.service.LoginService;  
  11. import com.tenghu.core.validator.LoginValidator;  
[html]   view plain copy
  1. @Before(IocInterceptor.class)  
  2. public class IndexController extends Controller{  
  3.     @Inject.BY_NAME  
  4.     private LoginService loginService;  
  5.     public void index(){  
  6.         List<Users> testList=Users.dao.find("select * from users");  
  7.         setAttr("testList", testList);  
  8.         render("login.html");  
  9.     }  
  10.       
  11.     public void login(){  
  12.         String username=getPara("name");  
  13.         String password=getPara("password");  
  14.         if(loginService.login(username, password)){  
  15.             renderText("登录成功");  
  16.         }else{  
  17.             renderText("登录失败");  
  18.         }  
  19.     }  
  20. }  
上例将对 loginService 按属性名称进行注入。注解@Inject.BY_NAME 按属性名进行注入,@Inject.BY_TYPE 按类型进行注入。不指定注入类型时将不会进行注入。

登录服务接口与实现类:

[html]   view plain copy
  1. package com.tenghu.core.service;  
  2.   
  3. public interface LoginService {  
  4.     /**  
  5.      * 登录处理  
  6.      */  
  7.     public boolean login(String username,String password);  
  8. }  

[html]   view plain copy
  1. package com.tenghu.core.service.impl;  
  2.   
  3. import com.tenghu.core.service.LoginService;  
  4.   
  5. public class LoginServiceImpl implements LoginService{  
  6.     /**  
  7.      * 登录处理  
  8.      */  
  9.     public boolean login(String username, String password) {  
  10.         if("admin".equals(username)&&"admin".equals(password)){  
  11.             return true;  
  12.         }  
  13.         return false;  
  14.     }  
  15. }  


Spring配置文件:
[html]   view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.         xmlns:aop="http://www.springframework.org/schema/aop"  
  5.         xmlns:tx="http://www.springframework.org/schema/tx"  
  6.         xsi:schemaLocation="  
  7.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  9.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"  
[html]   view plain copy
  1. <span style="white-space:pre">            default-autowire="byName"</span>>  
  2.     <bean id="loginService" class="com.tenghu.core.service.impl.LoginServiceImpl"/>  
  3. </beans>  
配置完成

你可能感兴趣的:(JFinal集成Spring)