Data pegas memberikan dukungan untuk audit: yaitu, ketika entitas dibuat atau dimodifikasi. Data pegas menyediakan penambahan @createdby, @LastModiedBy, @CreatedDate, @LastModiedDate anotasi ke properti kelas entitas dan mengkonfigurasi item konfigurasi yang sesuai untuk mewujudkan fungsi audit. Sistem secara otomatis mencatat nilai -nilai empat properti dari CreatedBy CreatedDate LastModifiedBy LastModifiedDate. Berikut ini adalah item konfigurasi spesifik.
Contoh
Buat kelas entitas
Paket com.hfcsbc.infrastructureService.domain; impor com.hfcsbc.repository.support.domain.Abstracauditity; impor lombok.data; impor org.springframework.data.annotation.createdby; impor org.springframework.data.annotation.createdby; impor org.springfringframework.data.annotation.createdby; impor org.spramram.data.notation.createdby; impor org.springfring.data.data.notation.createdby; impor org.springfring.data.data. org.springframework.data.annotation.lastmodifiedby; impor org.springframework.data.annotation.lastmodifiedDate; impor org.springframework.data.jpa.domain.support.Auditentitylistener; Pengchao pada 2018/3/7 */@entitas@data@entitylisteners ({auditingEntityListener.class}) orang kelas publik {@id @GeneratedValue Private Long ID; nama string pribadi; usia bilangan bulat pribadi; @Createdby @column (name = "create_by", nullable = false, length = 50, update = false) string private createdby; @Createddate @column (name = "create_date", nullable = false, update = false) tanggal pribadi dibuat createdDate = new date (); @LastModiedBy @Column (name = "last_modied_by", length = 50) Private String lastModiedByBy; @LastModiedDate @Column (name = "last_modied_date") tanggal pribadi lastmodifiedDate = new date ();}Buat repositori yang sesuai
package com.hfcsbc.repository;import com.hfcsbc.domain.Person;import org.springframework.data.jpa.repository.JpaRepository;/** * Create by pengchao on 2018/3/7 */public interface PersonRepository extends JpaRepository<Person, Long> {}Konfigurasikan kacang untuk mendapatkan informasi pengguna
Paket com.hfcsbc.infrastructureService.config; impor org.springframework.data.domain.auditoraware; impor org.springframework.security.core.authentication; impor org.springframework.security.core.context.security 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 opsional.of (authentication.getPrincipal (). ToString ()); }}Nyalakan fungsi audit di kelas entri boot musim semi
package com.hfcsbc.infrastructureservice;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.data.jpa.repository.config.EnableJpaAuditing;import org.springframework. }}
Artinya, konfigurasi selesai. Saat menyimpan objek menggunakan repositori, createdby createdDate lastmodifiedy lastmodiedDate memiliki fungsi audit untuk secara otomatis memasukkannya.
Catatan: Cara mendapatkan informasi pengguna dalam metode asinkron
Karena Anda menggunakan repositori untuk menyimpan objek dalam metode asinkron, Anda tidak dapat memperoleh informasi pengguna. Anda perlu menambahkan item konfigurasi berikut untuk mendapatkan informasi pengguna dalam otentikasi
Paket com.hfcsbc.config; impor org.springframework.beans.factory.config.methodinvokingfactorybean; impor org.springframework.context.annotation.bean; impor org.springframework.context.annotation.configuration; 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 (string baru [] {SecurityContExtholder.mode_inHeritableThreadlocal}); return MethodInvokingFactoryBean; }}Fungsi utama dari SecurityContExtholder adalah untuk mengaitkan proses yang saat ini dieksekusi dengan SecurityContext.
SecurityContExtholder.mode_initableThleadlocal: Digunakan dalam kasus di mana utas memiliki hubungan orangtua-anak, utas anak mengintegrasikan SecurityContextholder dari utas induk;
SecurityContextholder.mode_initableThreadlocal: Bagikan secara global SecurityContextholder.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.