2011-01-30 2 views
0

Я использую весеннюю безопасность и aspjectj с компиляцией во времени. Я пытаюсь зарегистрировать успешный вход в систему. Мой pointcut выглядит следующим образом. но он не получаетspring aspecjt weaving не работает

@Pointcut("execution(* com.myapp.dao.UserDao.loadUserByUsername(..))") 
private void pointcutUserLoginLogging() {} 


@AfterReturning(pointcut="pointcutUserLoginLogging()") 
public void doUserLogging(JoinPoint joinPoint){ 

} 

метод, который я пытаюсь осмотреть имеет следующую подпись

public class UserDao extends AbstractDao<User> implements GenericDao<User>, UserDetailsService {  
@Transient 
public UserDetails loadUserByUsername(String username) 
throws UsernameNotFoundException, DataAccessException { 
    return loadByUsername(username); 
} 
} 
+0

То, что вы показали, выглядит хорошо. Поэтому я подозреваю, что ваша конфигурация сборки имеет проблемы. Как вы строите? Покажите немного этого кода. – ramnivas

+0

Я использую maven для компиляции. У меня есть другие аспекты в моем приложении, и все они работают нормально. Во время процесса сборки я вижу много журналов о том, какие классы сотканы, но UserDao не появляется. Я поставил точку останова во время работы с кодом и тем же, он не входит в метод. – user373201

+0

Является ли метод (loadUserByUsername) в классе UserDao? Это может помочь, если вы покажете скелет класса UserDao и объясните немного иерархии наследования. – ramnivas

ответ

0

Такого рода вопрос почти всегда указывает на проблему создания установки. Просто убедитесь, что банки, которые вы хотите соткать, находятся в «inpath», а аспекты находятся в «aspectpath». Maven, Ant, Eclipse/AJDT обеспечивают способ включения банок в соответствующие пути.