Данные Spring обеспечивают поддержку для аудита: то есть, когда объект создается или модифицирована. Данные Spring предоставляют добавление @createdby, @lastmodifiedby, @createddate, @lastmodifieddate аннотации в свойствах класса объекта и настраивают соответствующие элементы конфигурации для реализации функции аудита. Система автоматически записывает значения четырех свойств созданного CreatedDate LastModifiedby LastModifiedDate. Ниже приведены конкретные элементы конфигурации.
Пример
Создать класс сущностей
пакет com.hfcsbc.infrastructureservice.domain; импорт com.hfcsbc.repository.support.domain.abstractauditingentity; import lombok.data; import org.springframework.data.annotation.crateedby; импорт org.spramework.dataTation.crateDtaTy.crateDation; org.springframework.data.annotation.lastmodifiedby; import org.springframework.data.annotation.lastmodifieddate; импорт org.springframework.data.jpa.domain.support.AditingEntityLister; Импорт javax.persistence. PengChao на 2018/3/7 */@entity@data@entitylisteners ({auditionletilitylistener.class}) открытый класс Person {@id @GeneratedValue Private Long ID; Приватное название строки; частный целый возраст; @Createdby @column (name = "create_by", nullable = false, length = 50, update = false) частная строка CatureBy; @Createddate @column (name = "censue_date", nullable = false, update = false) частная дата centureDate = new Date (); @Lastmodifiedby @column (name = "last_modified_by", длина = 50) частная строка LastModifiedBy; @Lastmodifieddate @column (name = "last_modified_date") частная датаСоздать соответствующий репозиторий
Пакет com.hfcsbc.repository; import com.hfcsbc.domain.person; import org.springframework.data.jpa.repository.jparepository;/** * Создать Pengchao на 2018/3/7 */public interface personrepository extends jparepositor
Настройка бобов для получения информации пользователя
пакет com.hfcsbc.infrastructureservice.config; import org.springframework.data.domain.AuditorAware; import org.springframework.security.core.Authentication; импорт org.sprimework.security.core.corecrperationscontextoLder; java.util.optional;/** * Создать Pengchao на 2018/3/7 */ @component ("auditoraware") открытый класс AuditorAwareImpl реализует AuditorAware <string> {@Override public optunal <string> getCurrentAuditor () {Authentication outentication = securityContexTholder.GetCeleCtextexteText () {Authentication Authentication = SecurityContexTholder.getContexteText (). return optainAl.of (Authentication.getPrincipal (). ToString ()); }}Включите функцию аудита в классе входа Spring Boot
пакет com.hfcsbc.infrastructureservice; import org.springframework.boot.springapplication; импорт org.springframework.boot.autoconfigure.springbootapplication; импорт org.springframework.data.jpa.repository.config.enable org.springframework.scheduling.annotation.enableasync;@springbootapplication@enablejpaauditing (auditorawareref = "auditoraware")@enableasyncpublic class personapplication {public void main (string [] args) {SpringApplication.Run (PersonApplication. }}То есть конфигурация завершена. При сохранении объектов с использованием репозитория, созданный CreateDate LastModifiedBy LastModifiedDate имеет функцию аудита для автоматической вставки его.
Примечание. Как получить пользовательскую информацию в асинхронном методе
Поскольку вы используете репозиторий для сохранения объектов в асинхронном методе, вы не можете получить информацию пользователя. Вам нужно добавить следующие элементы конфигурации, чтобы получить пользовательскую информацию в аутентификации
пакет com.hfcsbc.config; import org.springframework.beans.factory.config.methodinvokingfactorybean; импорт org.springframework.context.antation.bean; импорт org.springframework.context.annotation.configuration; импорт; org.springframework.security.core.context.securityContextholder;/** * Создание PengChao на 2018/3/3/7 */ @configuration MethodInVokingFactoryBean (); methodInvokingFactoryBean.SetTargetClass (SecurityContextholder.class); MethodInvokingFactoryBean.SetTargetMethod ("setStrategyName"); methodInvokingFactoryBean.setArguments (new String [] {SecurityContexTholder.Mode_InheritableThreadLocal}); return MethodInvokingFactoryBean; }}Основная функция SecurityContextholder - это связать в настоящее время выполняемый процесс с SecurityContext.
SecurityContexTholder.Mode_InheritableThreadLocal: используется в случае, когда потоки имеют отношения между родителями и детьми, дочерняя поток интегрирует безопасность Concontextholder родительского потока;
SecurityContexTholder.Mode_InheritableThreadLocal: глобально обмениваться SecurityContextholder.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.