2016-03-25 23 views
0

Ich möchte eine einfache App auf Spring Boot erstellen erstellen. Ich habe keine Erfahrung mit dem Framework, und dieses Problem ist über mich hinaus.Vordefinierte Bohnen im Frühjahr Boot

Ich möchte das Sicherheitsmodul in meiner App verwenden, insbesondere die org.springframework.security.authentication.encoding.ShaPasswordEncoder Klasse. Ich möchte diese autowired als eine Bohne bekommen.

Wie definiere ich das im Spring Boot? Zum Beispiel, this answer erklärt, wie man es in "regulären" Spring - die Bean in einer XML-Datei zu definieren. Als ich jedoch die Boot-Übersicht gelesen habe, habe ich festgestellt, dass das XML-Setup nicht benötigt wird, also ist es möglich, dies irgendwie im Code zu tun, nicht in der Konfiguration? Was ist der Boot-ish Weg?

Ich habe versucht, nur mit diesem Code die Encoder-Klasse zu bekommen.

@Autowired 
private ShaPasswordEncoder passwordEncoder; 

Aber ich erhalte eine Ausnahme: org.springframework.beans.factory.NoSuchBeanDefinitionException - es ist nicht definiert ist, aber wie kann ich es definieren?

Dank

+2

Ich glaube, Sie immer noch Klassen mit '@ Configuration' und Methoden mit' @ Bean' definieren können. –

Antwort

2

Die Bohnen können in-Code wie folgt definiert werden:

@Bean 
public ShaPasswordEncoder passwordEncoder() { 
    return new ShaPasswordEncoder(); 
} 

Diese Methode wird eine Bean erstellen "passwordEncoder" genannt, die von Spring verwaltet werden. Es ist das Äquivalent der XML-Stil

<bean class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" id="passwordEncoder" /> 

Sie diese Methode in der @SpringBootApplication -annotated Klasse setzen, oder jede Klasse mit @Configuration kommentiert.

More info here

Verwandte Themen