À l'aide de @Autocâblés avec AspectJ et Springboot

Je veux utiliser @Autocâblés annotation dans un "Aspect". Je veux injecter un référentiel dans mon aspect, mais quand j'essaie d'appeler une méthode de mon autocâblés classe un NullPointException se produit.

@Aspect
public class AspectSecurity {

@Autowired
private UserRepository userRepository;


@After("execution(public * dash.*.*Controller.*(..))")
public void authentication(JoinPoint jp) throws UnauthorizedException {
    System.out.println("SECURITY !");

    System.out.println(userRepository.findAll().toString());

   }
}

J'ai déjà essayé d'ajouter @Component au-dessus de mon aspect de la Classe, mais j'ai la même erreur.

Si je n'utilise pas un aspect de la classe, mais un @Controller je peux appeler mes référentiel sans problèmes.

Certains documents parlent de configuration spring avec des fichiers xml, mais avec spring boot je n'ai pas ces fichiers.

Voici une partie de mon pom.xml qui appel la aspectJ plugin:

            <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
<source>1.6</source>
<target>1.6</target>
<Xlint>ignore</Xlint>
<complianceLevel>${compiler.version}</complianceLevel>
<encoding>UTF-8</encoding>
<verbose>false</verbose>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>

Ici ma classe d'Application:

package dash;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

Ici le Contrôleur de classe dont l'aspect est appelé:

package dash.user;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import dash.GenericController;
@Controller
@RequestMapping("/user")
public class UserController extends GenericController {
@Autowired
private UserRepository repository;
@RequestMapping("/findAll")
public @ResponseBody User create(
@RequestParam(value="login", required=true) String login,
@RequestParam(value="password", required=true) String password) {
System.out.println(login);
System.out.println(password);
System.out.println("Users found with findAll():");
System.out.println("-------------------------------");
for (User user : repository.findAll()) {
System.out.println(user);
}
return  repository.findOne("root");
}
}

Note: j'ai déjà essayé d'ajouter @EnableAspectJAutoProxy au-dessus de ma classe d'application

merci pour votre aide

Où en êtes-vous essayer d'utiliser l'Aspect?
Avez-vous essayé d'ajouter @Configurable à l'aspect de la classe?
L'aspect est utilisée "après" la "créer" la méthode. Il n'y a pas de logique de nommage. C'est juste un POC. Selon l'aspect de l'expression @After("execution(public * dash.*.*Controller.*(..))") l'aspect est appelée pour toutes les méthodes publiques ayant "Contrôleur" à la fin du nom dans toutes les classes de tous les packages du package "tableau de bord" ^^
J'ai juste essayé d'ajouter @Configurable au-dessus de la déclaration de mon aspect de la classe, mais j'ai le même résultat. Pourriez-vous me donner quelques explications sur le pourquoi vous voulez ajouter @Configurable ?

OriginalL'auteur maxiplay | 2014-01-25