Bonjour.

Pour la gestion de la Persistence j'utilise l'annotation @Autowired et tout fonctionne très bien.
J'ai des Services :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Service
public class MonService implements InterfaceDeMonService{
 
    @Autowired
    private MonDao dao;
 
   @Override
   @Transactional (readOnly=true)
   public JSONObject methodeService() {
      dao.methodeDao();
Des Dao :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
@Repository
public class MonDao implements InterfaceDeMonDao{
   @PersistenceContext
    private EntityManager entityManager;
 
   @Override
   public JSONArray methodeDao() {
      Query query = entitManager.createQuery(...
Et ça fonctionne dans les Contrôleurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
@Controller
public class AdminController {
    @Autowired
    private MonService service;
 
    @RequestMapping("/page/que/je/veux")
    public @ResponseBody ModelAndView page() {
        service.methodeService();
Là ça marche sans problème.
Mais si ailleurs j'essaie de récupérer le même service avec @Autowired, j'ai un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'NomDeLaClasse': Unsatisfied dependency expressed through field 'service': No qualifying bean of type [com.MonService] found for dependency
Là en l’occurrence c'est dans la classe qui extends WebSecurityConfigurerAdapter.

Mais au pire si ça ne fonctionne pas là, ce n'est pas grave, j'en ai pas besoin pour l'instant.
Par contre j'ai voulu avoir des propriétés personnalisées avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<sec:authentication property="principal.username" />
principal.username fonctionne sans problème, mais j'ai voulu en avoir d'autre comme principal.email par exemple.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
    @Autowired
    DataSource dataSource;
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
    	http.authenticationProvider(new CustomAuthenticationProvider());
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public class CustomAuthenticationProvider implements AuthenticationProvider {
 
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        Authentication auth = null;
        ApplicationUser appUser = new ApplicationUser(...);
        auth = new UsernamePasswordAuthenticationToken(appUser, password, grantedAuths);
        return auth;
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public class ApplicationUser extends User {
 
    public String getEmail() {
        return email;
    }
Dans la classe qui extends WebSecurityConfigurerAdapter, il y a une méthode protected void configure(HttpSecurity http), dans cette méthode j'utilise mon propre AuthentificationProvider : http.authenticationProvider(new CustomAuthenticationProvider());, la classe CustomAuthentificationProvider possède une instance de classe qui extends User.

Le bon côté c'est que depuis le jsp je peux faire principal.email et ça marche.
Par contre je ne peux pas avoir accès au service qui gère la persistance pour faire des requêtes dans la base de données...
Là j'ai même pas de message d'erreur c'est juste complètement ignoré.

Si vous avez des conseils, des idées, merci de m'en faire part.
Merci d'avance.
Bonne journée.
Cordialement.

=====
EDIT : J'ai rajouté l'annotation @Component dans ma classe CustomAuthenticationProvider et je retrouve la même erreur.

Dans les contrôleurs @Autowired fonctionne mais pas dans la configuration...