[Java] [Spring] Que faire si vous ne pouvez pas utiliser Autowire avec une discordance de type après avoir annoté Spring Security

Contexte

Je voulais contrôler l'accès avec les annotations de la méthode Spring Security.

Annoté une classe existante.

MyService.java


@Component
public class MyService {

    @PreAuthorize("hasRole('ROLE_ADMIN')")
    public void someAdminAction() {
        /* ... */
    }
}

J'ai créé une classe de configuration pour activer les annotations.

MethodSecurityConfiguration.java


@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfiguration {

}

«MyService» injectait dans le contrôleur.

MyController.java


@RestController
public class MyController {

    @Autowired
    private MyService myService;

    /* ... */
}

Qu'est-il arrivé

Je ne peux pas injecter MyService dans MyController!

Quelque chose appelé Type Mismatch! !!

Cause

La classe annotée AOPs et devient un proxy, il semble donc que le type a changé (?).

Solution

Ajout de l'option proxyTargetClass = true.

MethodSecurityConfiguration.java


@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, proxyTargetClass = true)
public class MethodSecurityConfiguration {

}

Recommended Posts

[Java] [Spring] Que faire si vous ne pouvez pas utiliser Autowire avec une discordance de type après avoir annoté Spring Security
Que faire si vous ne pouvez pas exécuter avec la commande "nom du package Java / nom de la classe"
Que faire si vous vous fâchez contre OpenSSL avec Pyenv Install
[Rails] Que faire si vous ne pouvez pas obtenir de paramètres avec form_with
Que faire si JavaMail ne peut pas être utilisé avec OpenJDK 11 ou version ultérieure
Que faire si vous transmettez des informations incorrectes
Que faire si vous avez installé Java pour OS X sur macOS
Que faire si vous créez accidentellement un modèle
Que faire si vous obtenez une erreur NoClassDefFoundError lorsque vous essayez d'exécuter eclipse sur Java 9
Que faire si vous ne trouvez pas votre clé API après le déploiement sur Rails Heroku
Que faire lorsqu'une exception java.io.IOException se produit dans GlassFish
Que faire si vous modifiez l'adresse d'écoute à partir de l'écran des paramètres dans le menu fixe Mattermost
Que faire si vous avez installé Ruby avec rbenv mais que la version ne change pas
[Rails] Que faire si vous ne pouvez pas obtenir de message d'erreur avec la méthode des erreurs
Que faire si la commande adb ne peut pas être exécutée
Que faire si la commande rails devient inutilisable
Que faire quand git status indique Modifications non préparées pour la validation: après git add.
Que faire si vous obtenez une erreur gcc dans Docker
Que faire lorsque la validation ne fonctionne pas avec l'action de mise à jour
Que faire si vous oubliez votre mot de passe root sur CentOS7
Que faire si vous entrez gem'bcrypt 'dans votre Gemfile et obtenez une erreur avec l'installation du bundle
Que faire si l'application dont le nom est appName est déjà enregistrée. Lorsque vous essayez de démarrer GlassFish
Que faire si vous obtenez l'erreur Trop long sans sortie (dépassé 10m0s) dans CircleCI
Que faire si les modifications ne sont pas reflétées après le déploiement automatique vers EC2
Que faire si vous obtenez un avertissement groovy dans Thymeleaf Layout
Que faire si l'image d'arrière-plan n'est pas appliquée après le déploiement
Que faire lorsque CentOS ne peut pas être démarré avec VirtualBox sur Catalina
Que faire si vous ne pouvez pas installer le plug-in à partir d'Eclipse Marketplace
Que faire si vous n'aimez pas le code généré par swagger-codegen-cli
Que faire si vous recevez une alerte de vulnérabilité MiniMagick sur GitHub
Que faire si la construction échoue avec l'erreur «Le module compilé avec Swift x.x.x ne peut pas être importé par le compilateur Swift x.x.x»
Si vous osez comparer Integer avec "==" ...
Que faire après la mise à jour de Dockerfile, docker-compose.yml
Que faire si vous avez activé Utiliser le moteur basé sur WSL2 dans Docker Desktop avec une installation WSL2 insuffisante
Que faire si vous obtenez Impossible d'enregistrer la table principale dans un fichier après l'importation d'un projet dans Eclipse
Comment traduire le message d'erreur en japonais (que faire si vous ne pouvez pas vous connecter pour une raison quelconque)
Que faire lorsque vous pensez que vous ne pouvez pas Groovy-> Java avec IntelliJ IDEA CE
Que faire si vous obtenez Impossible de localiser le répertoire Gemfile ou .bundle /
Que faire si vous ne pouvez pas activer la boîte de sélection créée par bootstrap-select
[Java] Pourquoi vous embêtez-vous à utiliser l'interface (Spring est également disponible)
wildflly10 java8 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (récupération périodique) IJ000906 Que faire en cas d'erreur
Que faire quand Pour installer la version manquante, exécutez `gem install bundler: 2.1.4`
Que faire si le chargement de l'URL SPA ne peut pas être détecté par WebView shouldOverrideUrlLoading
WELD-001408: Que faire lorsque les dépendances non satisfaites pour le type Bean avec des qualificatifs @Default