Wat is het nut van @Order-annotatie in het voorjaar?

Ik ben een korte code tegengekomen die gebruikmaakt van @Orderannotatie. Ik wil weten wat het nut is van deze annotatie met betrekking tot Spring Security of Spring MVC.

Hier is een voorbeeld:

@Order(1)
public class StatelessAuthenticationSecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserDetailsService userDetailsService;
    @Autowired
    private TokenAuthenticationService tokenAuthenticationService;
}

Wat gebeurt er met de volgorde van de bovengenoemde klasse als we deze annotatie niet gebruiken?


Antwoord 1, autoriteit 100%

Het wordt gebruikt voor de uitvoering van advies.

Het advies met de hoogste prioriteit wordt als eerste uitgevoerd. Hoe lager het getal, hoe hoger de prioriteit. Als u bijvoorbeeld twee ‘voor’-adviezen krijgt, wordt degene met de hoogste prioriteit als eerste uitgevoerd.

Een andere manier om het te gebruiken is om Autowired collecties te bestellen

@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())
        }
    }
}

U kunt hier uitvoerbare code vinden: https://github.com/patrikbego/spring -order-demo.git

Ik hoop dat dit het een beetje verder verduidelijkt.

Uitvoer:-

Mazda Toyota


Antwoord 2, autoriteit 16%

@OrderAnnotaties (evenals de Orderedinterface) impliceren een specifieke volgorde, waarin de bonen worden geladen of geprioriteerd door Spring.

Lagere cijfers geven een hogere prioriteit aan. De functie kan worden gebruikt om onder andere bonen in een bepaalde volgorde aan een verzameling toe te voegen (dwz via @Autowired).

In jouw specifieke voorbeeld verandert de annotatie niets in de klasse zelf. Waar deze specifieke klasse ook wordt gebruikt, deze wordt met de hoogste prioriteit gebruikt (omdat deze is ingesteld als ‘1’), waarschijnlijk omdat aanvullende, maar afhankelijke informatie wordt toegevoegd aan andere klassen, gerangschikt met een lagere prioriteit.


Antwoord 3, autoriteit 5%

@OrderAnnotatie specificeert de volgorde van het laden van de boon per veercontainer. Hoe lager de volgorde (geheel getal), hoe hoger de prioriteit. Dus volgorde van 0 heeft meer voorrang dan volgorde van 10. Evenzo heeft volgorde van -100 meer prioriteit dan 0.

Other episodes