Spring Data는 감사를 지원합니다. 즉, 엔티티가 생성되거나 수정 될 때. Spring Data는 @CreatedBy, @LastModifiedBy, @CreatedDate, @lastModifiedDate 주석을 엔티티 클래스의 속성에 추가하고 해당 구성 항목을 구성하여 감사 기능을 실현할 수 있습니다. 이 시스템은 CreateDBy의 4 가지 속성의 값을 자동으로 기록합니다. LastModifiedBy lastModifiedDate. 다음은 특정 구성 항목입니다.
예
엔티티 클래스를 만듭니다
package com.hfcsbc.infrastructureService.domain; import com.hfcsbc.repository.support.domain.abstractudingentity; import lombok.data; import org.springframework.data.annot.createdby; import org.springframework.data.annotation.crateddate; org.springframework.data.annotation.lastmodifiedby; import org.springframework.data.annotation.lastmodifieddate; import org.springframework.data.jpa.domain.support.audingentityListener; import javax.persistence. 2018/3/7 */@entity@data@EntityListeners ({AuditingEntityListener.class}) 공개 클래스 개인 {@id @generatedValue private long id; 개인 문자열 이름; 개인 정수 시대; @createdby @column (name = "created_by", nullable = false, length = 50, update = false) private String cheadby; @CreatedDate @Column (이름 = "create_date", nullable = false, update = false) 개인 날짜 createdDate = new Date (); @lastModifiedBy @Column (이름 = "last_modified_by", 길이 = 50) 개인 문자열 lastModifiedBy; @lastModifiedDate @Column (이름 = "last_modified_date") 개인 날짜 lastModifiedDate = new Date ();}해당 저장소를 만듭니다
package com.hfcsbc.repository; import com.hfcsbc.domain.person; import org.springframework.data.jpa.repository.jparepository;/** * Pengchao에 의해 생성 된 2018/3/7 */public interface personrepository jparepository elperns, long>}
사용자 정보를 얻기 위해 Bean을 구성하십시오
package com.hfcsbc.infrastructureservice.config; import org.springframework.data.data.auditoraware; import org.sprameframework.security.core.authentication; import org.sprameframework.security.core.core.core.scorecontontoration ormorg.sprampram.secontocomecompont. java.util.optional;/** * pengchao에 의해 2018/3/7 */ @component ( "Auditoraware") 공개 클래스 AuditoraWareimpl은 AuditoraWare <string> {@override public 옵션 <string> getcurrentauditor () {Autherication Authentication = SecurityContexTholder.getScontection (). 반환 옵션. }}Spring Boot Entry 클래스에서 감사 기능을 켜십시오.
package com.hfcsbc.infrastructureservice; import org.springframework.springApplication; import org.sprameframework.boot.autoconfigure.springbootApplication; import org.spramframework.data.jpa.repository.config.enablejpaauding; org.springframework.scheduling.annotation.enableasync;@springbootapplication@enablejpaauding (auditorawareRef = "AuditoraWare")@enableAsyncpublic 클래스 개인 정보 {public static void main (String [] args) {springApplication.run (personamplass, args); }}즉, 구성이 완료됩니다. Repository를 사용하여 객체를 저장할 때 createdBy는 lastModifiedBy LastModifiedDate에 자동으로 삽입 할 수있는 감사 기능이 있습니다.
참고 : 비동기 방법으로 사용자 정보를 얻는 방법
저장소를 사용하여 비동기 방법으로 객체를 저장하므로 사용자 사용자 정보를 얻을 수 없습니다. 인증에서 사용자 정보를 얻으려면 다음 구성 항목을 추가해야합니다.
패키지 com.hfcsbc.config; import org.springframework.beans.beans.beans.config.methodinvokingfactorybean; import org.spramframework.context.annotation.bean; import org.spramework.context.annotation.configuration; import; org.springframework.security.core.context.securityContexTholder;/** * 펜치에 의해 생성 2018/3/7/ @configurationpublic class auditorawareconfig {@bean public methodinvoking factorybean methodinvokingfactorybean (methodinvokingfactorybean methodinvokingfactorybean methodinvokingfactorybean MethodInvokingFactoryBean (); MethodInVokingFactoryBean.setTargetClass (SecurityContexTholder.class); MethodInvokingFactoryBean.setTargetMethod ( "setstrategyName"); MethodInVokingFactoryBean.setArguments (new String [] {SecurityContexTholder.Mode_InHeritableThreadLocal}); return methodinvokingfactorybean; }}SecurityContexTholder의 주요 기능은 현재 실행 된 프로세스를 SecurityContext와 연결하는 것입니다.
SecurityContexTholder.Mode_InHeritableThreadLocal : 스레드가 부모-자식 관계를 가진 경우 자식 스레드는 상위 스레드의 SecurityContexTholder를 통합합니다.
SecurityContexTholder.mode_inheritableThreadlocal : 전 세계적으로 SecurityContexTholder를 공유합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.