spring IoC和JFinal的集成

发布于 2021-12-04 06:55:05 字数 1484 浏览 675 评论 6

@JFinal

我按照文档配置SpringPlugin,但是我在一些Interceptor和Listener上配置@Before(IocInterceptor.class)后没有自动注入。把IocInterceptor配置成全局的也是一样。

applicationContext.xml:

<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

</beans>



Interceptor:

@Before(IocInterceptor.class)
public class AccessLogInterceptor implements Interceptor
{
  @Inject.BY_NAME
  private SessionService sessionService;
  
  @Override
  public void intercept(ActionInvocation ai)
  {
    ...
    sessionService.updateSession(session, url);
    ai.invoke();
  }
}




谁知道有没有不用SpringPlugin,直接用Spring的方法?

尝试了配置org.springframework.web.context.ContextLoaderListener没有成功。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

女中豪杰 2021-12-05 08:55:57

写的不错,继续加油!这里补充一下,http://www.marsitman.com/spring/spring_ioc.html

秉烛思 2021-12-05 08:51:58

我现在的处理办法:
1)定义一个标记接口

public interface Service {
}

然后顶一个一个所有Service的管理类,兼顾通用和公共模块:

public class Services {
	private Services() {}
	/**
	 * 配置管理器
	 */
	private static Config config = PropertiesBaseConfig.getGloablConfig();
	
	//全局单例引擎
	private static EngineService engineService = new EngineServiceImpl();
	
	/**
	 * 其他的服务注册容器
	 */
	private static ConcurrentMap<String, Service> services = new ConcurrentHashMap<String, Service>(); 
	
	/**
	 * 静态初始化
	 */
	static{
		engineService.init();
		config.init();
	}
	
	/**
	 * @Description : 注册一个服务
	 * @param		:serviceName,注册的服务名
	 * @param		:service 服务
	 * @return      : void 返回类型
	 */
	public static void registService(String serviceName,Service service){
		services.put(serviceName, service);
	}
	
	/**
	 * @Description : 获取一个服务
	 * @param		:serviceName,注册的服务名
	 * @return      : 一个服务,或者为null(没有该服务的情况下)
	 */
	public static Service getService(String serviceName){
		return services.get(serviceName);
	}
	
	/**
	 * 获取单例配置管理器
	 */
	public static Config getConfig(){
		return config;
	}
	
	/**
	 * 获取单例引擎
	 */
	public static  EngineService getEngineService(){
		return engineService;
	}
	...

草莓味的萝莉 2021-12-05 08:47:27

我写的小网站,业余爱好而已。

丢了幸福的猪 2021-12-05 07:24:41

我一般推荐稍微大一些的项目用SpringSide,

而小网站应用使用JFinal。

其实两个都不错。SpringSide的Size很大。

凡尘雨 2021-12-04 22:03:13

我昨晚看了一下JFinal的源代码,模仿你的写法在我的service类里面添加了me()方法实现单例模式,IoC就放弃了。

顾挽 2021-12-04 16:32:57

回复
其实业务层不必须做成单例模式,如果你的业务层是无状态的可以在Controller 中来个 static Service service = new Service(),然后在actoin中可以共享使用这个业务对象。如果是有状态的,可以在每个action 中 new Service().doSomeThing()来用

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文