0
点赞
收藏
分享

微信扫一扫

JFinal Service互相依赖,多次遇到null没有正常初始化的问题


public class TenderAdminService extends BaseService<Tender> {
	private LoanAdminService loanAdminService = LoanAdminService.me;
	
	private void searchLoanIdList(){
	    //这个地方loanAdminService是null
	    loanIdList = loanAdminService.searchLoanIdList(loanCondition);
	}
}

public class LoanAdminService extends BaseService<Loan> {
	private TenderAdminService tenderAdminService = TenderAdminService.me;
}

代码大致如此。

注释的地方,为啥会出现为null呢?

普通代码,发现互相依赖没问题。

感觉是JFinal 或者 Model 的问题。

2个Service都继承了BaseService。

public abstract class BaseService<T extends Model<T>>

 

具体原因,没有明显看出来。

---------------------------------------------

import com.jfinal.plugin.activerecord.Model;

public class User extends Model {

	public static User me = new User();
	private static Cat cat = Cat.me;
	
	public void hi(){
		System.out.println("hi user start");
		cat.hi();
	}
	
	public void hi2(){
		System.out.println("hi2 user start");
	}
	
	public static void main(String[] args) {
		User user = User.me;
		user.hi();
		Cat cat = Cat.me;
		cat.hi();
	}
}

 

import com.jfinal.plugin.activerecord.Model;

public class Cat  extends Model {
	private static User user = User.me;
	public static Cat me =new Cat();
	
	public void hi(){
		System.out.println("hi cat start");
		user.hi2();
	}
}

写了2个测试例子,User和Cat,无论是否继承 JFinal的Model都没问题。

 

简单做个记录,提示今后,需要注意这个问题。毕竟已经多次遇到了。

目前想到的办法是,引入Manager层。

Manager层引入,简单的CRUD封装,Service负责业务实现和事务。

做到Service之间,尽可能避免互相引用。

不可避免的情况下,把那些核心的业务 做成一个单独的功能,也方便复用。

 

技术之路,很漫长呀。

做自己喜欢的。

举报

相关推荐

0 条评论