JFinal框架也整合了框架,下面实现JFinal怎么去配置Spring框架。在JFinal中整合Spring使用到的类是SpringPlugin和IocInterceptor类
SpringIplugin类:
SpringPlugin 是作为 JFinal 的 Plugin 而存在的,所以使用时需要在 JFinalConfig 中配置SpringPlugin,以下是 Plugin 配置示例代码:
1 /**2 * 配置插件3 */4 @Override5 public void configPlugin(Plugins me) {6 //ConfigDBPluginHelper.configOraclePlugin(me);7 //配置Spring挂件, 自动找spring包中所有的xml配置文件8 me.add(new SpringPlugin("classpath*:spring/*.xml"));9 }
以上设置默认spring配置xml在src/spring包下
如果设置sringPlugin的时候,没有设置路径
1 /**2 * 配置插件3 */4 @Override5 public void configPlugin(Plugins me) {6 //ConfigDBPluginHelper.configOraclePlugin(me);7 //配置Spring挂件, 自动找spring包中所有的xml配置文件8 me.add(new SpringPlugin());9 }
SpringPlugin 将 自动去WebRoot/WEB-INF 目录下寻找 applicationContext.xml 作为配置文件进行初始化。
IocInterceptor类:
IocInterceptor 拦截 action 并对其进行依赖注入,以下是示例代码:1 package com.demo.testSpring; 2 3 import com.jfinal.aop.Before; 4 import com.jfinal.core.Controller; 5 import com.jfinal.plugin.spring.IocInterceptor; 6 import com.jfinal.plugin.spring.Inject; 7 8 @Before(IocInterceptor.class) 9 public class testSpringController extends Controller{10 11 @Inject.BY_NAME12 private Animal animal;13 14 public void test(){15 animal.move();16 animal.jump();17 renderNull();18 }19 }
1 package com.demo.testSpring; 2 3 public class Animal { 4 private String animalName; 5 6 public void setAnimalName(String animalName) { 7 this.animalName = animalName; 8 } 9 10 public void move(){11 System.out.println(animalName+" move");12 }13 14 public void jump(){15 System.out.println(animalName+" jump");16 }17 }
1 210 11 12 16 1713 15dog 14
需要的jar包
注:IocInterceptor可以设置为全局拦截器;
1 /**2 * 配置全局拦截器3 */4 public void configInterceptor(Interceptors me) {5 me.add(new IocInterceptor());6 }
如果在非Controller中的类中使用spring注入,不需要那么多注解,只需要在xml中配置即可。如下:
1 package com.demo.testSpring; 2 3 public class Cat { 4 5 private Animal animal; 6 7 public void setAnimal(Animal animal) { 8 this.animal = animal; 9 }10 11 public void test(){12 animal.move();13 animal.jump();14 }15 }
1 package com.demo.testSpring; 2 3 import com.jfinal.core.Controller; 4 import com.jfinal.plugin.spring.Inject; 5 6 public class testSpringController extends Controller{ 7 8 @Inject.BY_NAME 9 private Cat cat;10 11 public void test(){12 13 cat.test();14 renderNull();15 }16 }
jfinal不提供自动注入功能,如autowared