Clair


Les intercepteurs sont divisés en quatre niveaux de haut en bas : Global, Inject, Class et Method. Clear est utilisé pour effacer les intercepteurs au-dessus du niveau où ils se trouvent.

L'instruction Clear sera effacée pour Global, Inject et Class lorsqu'elle sera déclarée dans la couche Méthode. Lorsque Clear est déclaré au niveau de la couche Class, il sera effacé pour Global et Inject. Lorsque l'annotation Clear comporte des paramètres, elle efface l'intercepteur spécifié dans la couche cible.

Compétences de mémoire d'utilisation Clear :

l Il existe quatre couches d'intercepteurs : Global, Inject, Class et Method

l La compensation concerne uniquement toutes les couches supérieures à la couche où se trouve Clear lui-même, et cette couche et la couche inférieure ne sont pas effacées

l Non Lorsque les paramètres sont pris, tous les intercepteurs sont effacés Lorsque les paramètres sont pris, les intercepteurs spécifiés par les paramètres sont effacés


Dans certains scénarios d'application, les intercepteurs globaux ou de classe doivent le faire. être retiré. Par exemple, un système de gestion en arrière-plan est configuré avec un intercepteur d'autorisation global, mais son action de connexion doit être effacée, sinon l'opération de connexion ne peut pas être terminée. Voici un exemple de code :


// login方法需要移除该权限拦截器才能正常登录
@Before(AuthInterceptor.class)
public class UserController extends Controller {
	// AuthInterceptor 已被Clear清除掉,不会被其拦截
	@Clear
	public void login() {
	}
 
	// 此方法将被AuthInterceptor拦截
	public void show() {
	}
}


Effacer l'annotation. avec Lorsqu'il y a des paramètres, l'intercepteur spécifié peut être effacé. Ce qui suit est un exemple plus complet :


@Before(AAA.class)
public class UserController extends Controller {
	@Clear
	@Before(BBB.class)
	public void login() {
	// Global、Class级别的拦截器将被清除,但本方法上声明的BBB不受影响
	}
 
	@Clear({AAA.class, CCC.class})// 清除指定的拦截器AAA与CCC
	@Before(CCC.class)
	public void show() {
	// 虽然Clear注解中指定清除CCC,但她无法被清除,因为清除操作只针对于本层以上的各层
	}
}




.