Los datos de Spring proporcionan soporte para la auditoría: es decir, cuando la entidad se crea o modifica. Los datos de Spring proporcionan la adición de @CreatedBy, @LastModifiedBy, @CreatedDate, @LastModifiedDate Anotaciones a las propiedades de la clase de entidad y configuran los elementos de configuración correspondientes para realizar la función de auditoría. El sistema registra automáticamente los valores de las cuatro propiedades de creationby createdDate LastModifiedby LastModifiedDate. Los siguientes son los elementos de configuración específicos.
Ejemplo
Crear una clase de entidad
paquete com.hfcsbc.infrastructureService.domain; import com.hfcsbc.repository.support.domain.AbStauditingEntity; import lombok.data; importar org.springframework.data.annotation.createdBy; import og.springframework.data.annotation.createdDate; org.springframework.data.annotation.LastModifiedBy;import org.springframework.data.annotation.LastModifiedDate;import org.springframework.data.jpa.domain.support.AuditingEntityListener;import javax.persistence.*;import java.util.Date;/** * Create by pengchao el 2018/3/7 */@entity@data@entityListeners ({AuditingEntityListener.class}) Persona de clase pública {@id @GeneratedValue Private Long Id; nombre de cadena privada; edad de entero privado; @CreatedBy @column (name = "creat_by", nullable = false, longitud = 50, update = false) cadena privada creada por; @CreatedDate @Column (name = "creat_date", nullable = false, update = false) privado fecha createdDate = new Date (); @LastModifiedBy @Column (name = "Last_Modified_By", longitud = 50) Cadena privada LastModifiedBy; @LastModifiedDate @Column (name = "Last_Modified_Date") Fecha privada LastModifiedDate = new Date ();}Crear el repositorio correspondiente
paquete com.hfcsbc.Repository; import com.hfcsbc.domain.person; import org.springframework.data.jpa.repository.jparpository;/** * Create by Pengchao en 2018/3/7 */Public Interface PersonRepository Extiende jParepository <Oll, long> {{}Configurar frijoles para obtener información del usuario
paquete com.hfcsbc.inFrastructureService.config; import org.springframework.data.domain.auditoraWare; import org.springframework.security.core.authentication; import org.springframework.security.core.context.securitycontextholder; import org.springframework.stereotype.component; import java.util.optional;/** * Create by Pengchao en 2018/3/7 */ @componente ("auditoraware") public class AuditorAWeAriMpl implementa AuditoraWare <String> {@Override Public Oppectional <String> GetCurrentInsor () {Authentation Authentication = Authentation = SecurityContexTholder.getContext (). GetAuthentication (); return Oppectional.of (Authentication.getPrincipal (). ToString ()); }}Encienda la función de auditoría en la clase de entrada de arranque de primavera
paquete com.hfcsbc.infrasturService; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import og.springFramework.data.jpa.rocository.config.enablejpAauditing; import; importar; importar; importar; importar; importar; importar; importar; importar; import org.springframework.scheduling.annotation.enableasync;@springBootApplication@enableJPaauditing (auditorawareref = "auditoraware")@enablaseSyncPublic PersonApplication {public static void main (string [] args) {springApplication.run (personAppaplication.class, args); }}Es decir, la configuración se completa. Al guardar objetos usando Repository, Creaty CreatedDate LastModifiedby LastModifiedDate tiene una función de auditoría para insertarlo automáticamente.
Nota: Cómo obtener información del usuario en el método asincrónico
Dado que usa Repository para guardar objetos en un método asincrónico, no puede obtener información del usuario del usuario. Debe agregar los siguientes elementos de configuración para obtener información del usuario en la autenticación.
paquete com.hfcsbc.config; import org.springframework.beans.factory.config.methodinvokingFactoryBean; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import; org.springframework.security.core.context.securityContexTholder;/** * Create by Pengchao en 2018/3/7 */ @ConfigurationPublicS Class AuditorAwareconFig { MethodInvokingFactoryBean (); MethodInvokingFactoryBean.setTargetClass (SecurityContexTholder.Class); MethodInvokingFactoryBean.setTargetMethod ("setStrategyName"); MethodInvokingFactoryBean.SetArGuments (new String [] {SecurityContexTholder.mode_inheritableThreadLocal}); Métodos de retorno InvokingFactoryBean; }}La función principal de SecurityContexTholder es asociar el proceso ejecutado actualmente con SecurityContext.
SecurityContexTholder.Mode_inheritableThreadLocal: utilizado en el caso en que los hilos tienen relaciones entre padres e hijos, el hilo infantil integra el SecurityContexTholder del hilo principal;
SecurityContexTholder.Mode_inheritableThreadLocal: Globalmente compartir SecurityContexTholder.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.