Jfinal集成Spring

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

SpringIplugin类:

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

1 /**
2      * 配置插件
3      */
4     @Override
5     public void configPlugin(Plugins me) {
6         //ConfigDBPluginHelper.configOraclePlugin(me);
7         //配置Spring挂件, 自动找spring包中所有的xml配置文件
8         me.add(new SpringPlugin("classpath*:spring/*.xml"));
9     }
配置SpringPlugin

以上设置默认spring配置xml在src/spring包下

如果设置sringPlugin的时候,没有设置路径

1 /**
2      * 配置插件
3      */
4     @Override
5     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_NAME
12     private Animal animal;
13     
14     public void test(){
15         animal.move();
16         animal.jump();
17         renderNull();
18     }
19 }
IocInterceptor
 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 }
依赖Animal类
 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">
10         
11     <bean id="animal" class="com.demo.testSpring.Animal">
12         <property name="animalName">
13                 <value>dog</value>
14             </property>
15      </bean>
16     
17 </beans>
配置文件

需要的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 }
Cat类
 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 }
Controller
 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">
10         
11     <bean id="animal" class="com.demo.testSpring.Animal">
12         <property name="animalName">
13                 <value>dog</value>
14             </property>
15      </bean>
16      
17      <bean id="cat" class="com.demo.testSpring.Cat">
18          <property name="animal">
19             <ref bean="animal"/>
20         </property>
21      </bean>
22     
23 </beans>
配置项

 jfinal不提供自动注入功能,如autowared

posted @ 2017-05-03 19:01  向_日_葵  阅读(4965)  评论(0编辑  收藏  举报