[Java] [Spring] Was tun, wenn Sie nach dem Kommentieren von Spring Security nicht automatisch mit Type Mismatch verdrahten können?

Hintergrund

Ich wollte den Zugriff mit Anmerkungen zur Spring Security-Methode steuern.

Kommentierte eine vorhandene Klasse.

MyService.java


@Component
public class MyService {

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

Ich habe eine Konfigurationsklasse erstellt, um Anmerkungen zu aktivieren.

MethodSecurityConfiguration.java


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

}

MyService wurde in den Controller injiziert.

MyController.java


@RestController
public class MyController {

    @Autowired
    private MyService myService;

    /* ... */
}

Was ist passiert

Ich kann MyService nicht in MyController injizieren!

So etwas wie Type Mismatch! !!

Ursache

Die mit Anmerkungen versehene Klasse AOPs wird zu einem Proxy, sodass sich der Typ anscheinend geändert hat (?).

Lösung

Die Option "proxyTargetClass = true" wurde hinzugefügt.

MethodSecurityConfiguration.java


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

}

Recommended Posts

[Java] [Spring] Was tun, wenn Sie nach dem Kommentieren von Spring Security nicht automatisch mit Type Mismatch verdrahten können?
Was tun, wenn Sie den Befehl "Java-Paketname / Klassenname" nicht ausführen können?
Was tun, wenn Sie sich über OpenSSL mit pyenv install ärgern?
[Rails] Was tun, wenn Sie mit form_with keine Parameter abrufen können?
Was tun, wenn JavaMail nicht mit OpenJDK 11 oder höher verwendet werden kann?
Was tun, wenn Sie falsche Informationen eingeben?
Was tun, wenn Sie Java für OS X unter macOS installiert haben?
Was tun, wenn Sie versehentlich ein Modell erstellen?
Was tun, wenn beim Versuch, Eclipse unter Java 9 auszuführen, ein NoClassDefFoundError angezeigt wird?
Was tun, wenn Sie Ihren API-Schlüssel nach der Bereitstellung auf Rails heroku nicht finden können?
Was tun, wenn in GlassFish eine java.io.IOException auftritt?
Was tun, wenn Sie die Listen-Adresse im Einstellungsbildschirm des Dockers Mattermost ändern?
Was tun, wenn Sie Ruby mit rbenv installiert haben, die Version sich jedoch nicht ändert?
[Schienen] Was tun, wenn mit der Fehlermethode keine Fehlermeldung angezeigt wird?
Was tun, wenn der Befehl adb nicht ausgeführt werden kann?
Was tun, wenn der Befehl Rails unbrauchbar wird?
Was tun, wenn der Git-Status besagt, dass Änderungen nicht für das Festschreiben bereitgestellt wurden: Nach dem Hinzufügen des Git.
Was tun, wenn in Docker ein gcc-Fehler auftritt?
Was tun, wenn die Validierung mit der Aktualisierungsaktion nicht funktioniert?
Was tun, wenn Sie Ihr Root-Passwort unter CentOS7 vergessen haben?
Was tun, wenn Sie gem'bcrypt 'in Ihre Gemfile eingeben und bei der Bundle-Installation eine Fehlermeldung erhalten?
Was tun, wenn Sie eine Anwendung mit dem Namen erhalten? AppName ist bereits registriert. Wenn Sie versuchen, GlassFish zu starten
Was tun, wenn in CircleCI der Fehler zu lang ohne Ausgabe (über 10 m0s) angezeigt wird?
Was tun, wenn die Änderungen nach der automatischen Bereitstellung in EC2 nicht übernommen werden?
Was tun, wenn Sie in Thymeleaf Layout eine groovige Warnung erhalten?
Was tun, wenn das Hintergrundbild nach der Bereitstellung nicht angewendet wird?
Was tun, wenn CentOS nicht mit VirtualBox unter Catalina gestartet werden kann?
Was tun, wenn Sie das Plug-In nicht vom Eclipse Marketplace installieren können?
Was tun, wenn Ihnen der von swagger-codegen-cli generierte Code nicht gefällt?
Was tun, wenn auf GitHub eine MiniMagick-Sicherheitsanfälligkeitswarnung angezeigt wird?
Was tun, wenn der Build mit dem Fehler "Mit Swift x.x.x kompiliertes Modul kann vom Swift x.x.x-Compiler nicht importiert werden" fehlschlägt.
Wenn Sie es wagen, Integer mit "==" zu vergleichen ...
Was tun nach dem Aktualisieren von Dockerfile, docker-compose.yml?
Was tun, wenn Sie aktiviert haben? Verwenden Sie die WSL2-basierte Engine in Docker Desktop mit unzureichender WSL2-Installation
Was tun, wenn Sie die Mastertabelle nach dem Importieren eines Projekts in Eclipse nicht in einer Datei speichern konnten?
So übersetzen Sie die Fehlermeldung ins Japanische (Was tun, wenn Sie sich aus irgendeinem Grund nicht anmelden können)
Was tun, wenn Sie glauben, dass Sie mit IntelliJ IDEA CE nicht Groovy-> Java können?
Was tun, wenn Sie Gemfile oder .bundle / directory nicht finden konnten?
Was tun, wenn Sie das mit bootstrap-select erstellte Auswahlfeld nicht aktivieren können?
[Java] Warum verwenden Sie die Benutzeroberfläche (Spring ist ebenfalls verfügbar)?
wildflly10 java8 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (Periodische Wiederherstellung) IJ000906 Was tun, wenn ein Fehler auftritt?
Was tun, wenn Um die fehlende Version zu installieren, führen Sie `gem install bundler: 2.1.4` aus
Was tun, wenn das Laden der SPA-URL von WebView nicht erkannt werden sollte
WELD-001408: Was tun, wenn nicht erfüllte Abhängigkeiten für den Typ Bean mit den Qualifikationsmerkmalen @Default vorliegen?