springに@Autowiredを使って注入できない場合を解決します.


springに@Autowiredを使って注入できない場合を解決します.
問題の概要:
springフレームを使用する過程で、よくこの2つのケースがあります.1、スキャンしたカバン以外に使用する場合は、mapper 2、同じディレクトリの下の二つのcontrollerまたは二つのserviceを使用して、@Autowired注解を使用してmapperまたはserviceに注入する場合、その一つは注入できますが、もう一つは空です.
理由:(ここでは第二種のみ)
ビルの主人は調整した後で発見して、フレームのスタートの過程の中で、この注釈は実は注入したことがあったので、注入したことがないのではなくて、ただその後どこかで消しました.
ソリューション
ここではビル主が解決策を示しています.本当に注入できない場合、ツール類の方法で注入できます.
@Component		 //      spring  
public class AbnormalRateUtil {
	//            
	private static AbnormalRateUtil abnormalRateUtil;
	//    mapper
	@Autowired
	private InterFaceInfoMapper interFaceInfoMapper;

	@PostConstruct		//       bean     
	private void init() {
		abnormalRateUtil = this;
		abnormalRateUtil.interFaceInfoMapper=this.interFaceInfoMapper;
		//         interFaceInfoMapper      
	}
	//  get  
	public static AbnormalRateUtil getAbnormalRateUtil() {
		return abnormalRateUtil;
	}
	//  get  
	public static InterFaceInfoMapper getInterFaceInfoMapper() {
		return abnormalRateUtil.interFaceInfoMapper;
	}
}
呼び出し方式
使用時には、このツールクラスを通じて直接に呼び出すことができます.
List ruleList=AbnormalRateUtil.getInterFaceInfoMapper().findRuleById(id);