Federdaten unterstützen die Prüfung: Das heißt, wenn die Entität erstellt oder geändert wird. Federdaten bieten die Hinzufügung von @CreatedBy, @LastModifiedby, @CreatedDate, @LastModifiedDate -Annotationen zu den Eigenschaften der Entitätsklasse und konfigurieren die entsprechenden Konfigurationselemente, um die Prüfungsfunktion zu realisieren. Das System zeichnet automatisch die Werte der vier Eigenschaften von erstelltem By erstelltDate lastModifiedby lastModifiedDate auf. Im Folgenden finden Sie die spezifischen Konfigurationselemente.
Beispiel
Erstellen Sie eine Entitätsklasse
paket com.hfcsbc.infrastructureService.domain; import com.hfcsbc.repository.support.domain.abstractauditingEntity; import lombok.data; importieren org. org. pengchao am 2018/3/7 */@entity@data@entityListeners ({{auditingEntityListener.class}) öffentliche Klasse Person {@ID @GeneratedValue Private Long ID; privater Zeichenfolge Name; privates Ganzzahlalter; @CreatedBy @Column (name = "created_by", nullable = false, length = 50, update = false) private String erstelltby; @CreatedDate @Column (name = "created_date", nullable = false, update = false) privates Datum createdDate = new Date (); @LastModifiedBy @Column (name = "last_modified_by", Länge = 50) private String lastModifiedBy; @LastModifiedDate @Column (name = "last_modified_date") privates Datum lastModifiedDate = new Date ();};};Erstellen Sie das entsprechende Repository
Paket com.hfcsbc.repository; import com.hfcsbc.domain.person; import org.springframework.data.jpa.repository.jparepository;/** * erstellen durch pengchao über 2018/3/7 */public interface personrepository dehnt Jarepository <persons aus.
Konfigurieren Sie Bohnen, um Benutzerinformationen zu erhalten
Paket com.hfcsbc.infrastructureService.config; import org.springframework.data.domain.auditoraware; Import org.springframework.security.core.Authentication; org.springframework.stereotype.Component;import java.util.Optional;/** * Create by pengchao on 2018/3/7 */@Component("auditorAware")public class AuditorAwareImpl implements AuditorAware<String> { @Override public Optional<String> getCurrentAuditor() { Authentication authentication = SecurityContextHolder.getContext (). GetAuthentication (); return optional.of (authentication.getPrincipal (). toString ()); }}Schalten Sie die Prüfungsfunktion in der Spring -Boot -Eingangsklasse ein
Paket com.hfcsbc.infrastructureService; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootApplication; org.springframework.Scheduling.annotation.enableAsync;@SpringbootApplication@enableJpaauditing (Auditorawareref = "Auditoraware")@ANLEBLEASYNCPUBLIC -KlassenpersonApplication {public static void main (String [] args) {SpringApplication.run (personApplication.run.run.run.run.run.run.run.run.run (personApplication.crun.run.run). }}Das heißt, die Konfiguration ist abgeschlossen. Wenn Sie Objekte mithilfe von Repository speichern, hat erstellt, dass er erstellte, erstellte Date lastModifiedBy lastModifiedDate hat eine Prüfungsfunktion, die sie automatisch einfügt.
Hinweis: So erhalten Sie Benutzerinformationen in der asynchronen Methode
Da Sie Repository verwenden, um Objekte in einer asynchronen Methode zu speichern, können Sie keine Benutzerbenutzungsinformationen erhalten. Sie müssen die folgenden Konfigurationselemente hinzufügen, um Benutzerinformationen in der Authentifizierung zu erhalten
Paket com.hfcsbc.config; import org.springframework.bean.factory.config.methodinvokingfactoryBean; import org.springFramework.Context.annotation.bean; org.springframework.security.core.context.SecurityContextHolder;/** * Create by pengchao on 2018/3/7 */@Configurationpublic class AuditorAwareConfig { @Bean public MethodInvokingFactoryBean methodInvokingFactoryBean() { MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean (); methodInvokingFactoryBean.settargetClass (SecurityContexTHolder.class); methodInvokingFactoryBean.settargetMethod ("setStrategyname"); methodInvokingFactoryBean.setArguments (neue String [] {SecurityContextHolder.mode_inheritabletReadLocal}); return methodInvokingFactoryBean; }}Die Hauptfunktion von SecurityContexTHolder besteht darin, den aktuell ausgeführten Prozess mit dem SecurityContext zu verbinden.
SecurityContextHolder.mode_inheritabletHeadLocal: Verwendet in dem Fall, in dem Threads übergeordnete Kindesbeziehungen verfügen, integriert der untergeordnete Thread den SecurityContexTHolder des übergeordneten Threads.
SecurityContextHolder.mode_inheritabletHeadLocal: Global Share SecurityContexTHOLDER.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.