@args

/ Spring / 3 条评论 / 453浏览
@Retention(RetentionPolicy.RUNTIME) // 生命注解的保留期限
@Target({ElementType.METHOD, ElementType.TYPE}) // 生命注解可以使用的类型
public @interface Login {
boolean role() default false; // 生命注解成员
}
@Aspect
public class UserServiceAspect {
@Before("@args(com.jilinwula.spring.annotation.Login)")
public void beforeArgs() {
System.out.println("需要登陆");
}
}
public interface IUserService {

public void login(String username, String password);

public void register(String username, String nickName, String password);

public void startTransaction(TransactionManager transactionManager);

}
public class UserServiceImpl implements IUserService {

public void login(String username, String password) {
System.out.println(String.format("用户登陆: username: %s password: %s", username, password));
}

public void register(String username, String nickName, String password) {
System.out.println(String.format("用户注册: username: %s nickName: %s password: %s", username, nickName, password));
}

@Override
public void startTransaction(TransactionManager transactionManager) {
TransactionManager.beginTransaction();
}

}
<bean id="userService" class="com.jilinwula.spring.aop.UserServiceImpl"/>
<bean class="com.jilinwula.spring.annotation.UserServiceAspect"/>
<aop:aspectj-autoproxy/>
@Test
public void test() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
IUserService userService = applicationContext.getBean("userService", IUserService.class);
userService.register("admin", "吉林乌拉", "jilinwula");
userService.login("admin", "jilinwula");
userService.startTransaction(new TransactionManager());
}
用户注册: username: admin nickName: 吉林乌拉 password: jilinwula

用户登陆: username: admin password: jilinwula 需要登陆 开启事物

  1. 这篇博客写的有问题。缺东西吧

    回复
  2. 你这个要表达的意思是检查UserServiceImpl 类中的login这个方法是否有Login这个注解,如果有就不需要校验是否需要登录?没看懂。作者解释一下。

    回复
  3. 这篇写的太不详细了。标签是干什么用的?

    回复