it-swarm.com.de

Was ist die Verwendung von @Order Annotation im Frühling?

Ich habe einen Blick auf Code gefunden, der @Order Annotation verwendet. Ich möchte wissen, was diese Anmerkung in Bezug auf Spring Security oder Spring MVC verwendet.

Hier ist ein Beispiel:

@Order(1)
public class StatelessAuthenticationSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private TokenAuthenticationService tokenAuthenticationService;

}

Was passiert mit der Reihenfolge der oben genannten Klasse, wenn wir diese Annotation nicht verwenden?

46
Qasim

Es wird für die Ausführungsausführung von Hinweisen verwendet.

Der Rat mit der höchsten Priorität läuft zuerst. Je niedriger die Zahl, desto höher die Priorität. Bei zwei Vorabempfehlungen wird derjenige mit der höchsten Priorität zuerst ausgeführt.

Eine andere Möglichkeit ist die Bestellung von Autowired-Kollektionen

@Component
@Order(2)
class Toyota extends Car {
    public String getName() {
        return "Toyota";
    }
}

@Component
@Order(1)
class Mazda extends Car {
    public String getName() {
        return "Mazda";
    }
}

@Component
public class Cars {
    @Autowired
    List<Car> cars;

    public void printNames(String [] args) {

        for(Car car : cars) {
            System.out.println(car.getName())
        }
    }
}

Ausführbaren Code finden Sie hier: https://github.com/patrikbego/spring-order-demo.git

Hoffe das klärt es ein wenig weiter. 

Ausgabe:-

Mazda Toyota 

55
Patrik Bego

@Order Annotations (sowie die Ordered-Schnittstelle) implizieren eine bestimmte Reihenfolge, in der die Beans von Spring geladen oder priorisiert werden.

Niedrigere Zahlen zeigen eine höhere Priorität an. Das Feature kann verwendet werden, um Beans in einer bestimmten Reihenfolge in eine Sammlung aufzunehmen (z. B. über @Autowired).

In Ihrem speziellen Beispiel ändert die Anmerkung nichts in der Klasse selbst. Wo immer diese bestimmte Klasse verwendet wird, wird sie mit der höchsten Priorität verwendet (da sie auf '1' gesetzt ist), wahrscheinlich weil zusätzliche, aber abhängige Informationen in anderen Klassen hinzugefügt werden, die nach einer niedrigeren Priorität geordnet sind.

4
Scorpio

@Order Annotation gibt die Reihenfolge an, in der die Bean nach Federbehälter geladen wird. Je niedriger die Ordnung (Ganzzahl) ist, desto höher ist die Priorität. Die Ordnung von 0 hat also eine höhere Priorität als die von 10. Gleichermaßen hat die Ordnung von -100 eine höhere Priorität als die 0.

0
Praful Jha