




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第利用SpringDataJPA開啟審計功能,自動保存操作人操作時間目錄1相關注解實現自動記錄上述信息主要有5個注解2實現過程2.1依賴引用2.2實體類標記審計屬性2.3審計自定義操作2.4應用開啟審計功能2.5實體操作有些業務數據對數據的創建、最后更新時間以及創建、最后操作人進行記錄。如果使用SpringDataJpa做數據新增或更新,可實現自動保存這些信息而不需要顯示設置對應字段的值,可通過以下步驟進行配置。
1相關注解
實現自動記錄上述信息主要有5個注解
@EnableJpaAuditing:審計功能開關
@CreatedBy:標記數據創建者屬性
@LastModifiedBy:標記數據最近一次修改者屬性
@CreatedDate:標記數據創建日期屬性
@LastModifiedDate:標記數據最近一次修改日期屬性
2實現過程
2.1依賴引用
使用SpringDataJPA要引用依賴spring-boot-starter-data-jpa,gradle引用方式如下
implementation'org.springframework.boot:spring-boot-starter-data-jpa'
2.2實體類標記審計屬性
案例使用User實體演示過程,需要在實體對應的字段上添加對應的注解表示是審計屬性,另外需要在實體類上開啟審計監聽,如下:
@Entity
@Table(name="h_user")
@EntityListeners({AuditingEntityListener.class})//開啟審計監聽
publicclassUser{
@GeneratedValue(strategy=GenerationType.IDENTITY)
privateIntegerid;
//保存創建人的字段
@CreatedBy
@Column(name="created_by")
privateStringcreatedBy;
//保存最近修改人的字段
@LastModifiedBy
@Column(name="last_modified_by")
privateStringlastModifiedBy;
//保存創建時間的字段
@CreatedDate
@Column(name="created_date")
//保存最近修改日期的字段
privateDatecreatedDate;
@LastModifiedDate
@Column(name="last_modified_date")
privateDatelastModifiedDate;
privateStringrealName;
privateStringusername;
privateStringmobile;
privateStringemail;
privateStringpassword;
privateIntegerflag;
publicIntegergetId(){
returnid;
publicvoidsetId(Integerid){
this.id=id;
publicStringgetCreatedBy(){
returncreatedBy;
publicvoidsetCreatedBy(StringcreatedBy){
this.createdBy=createdBy;
publicStringgetLastModifiedBy(){
returnlastModifiedBy;
publicvoidsetLastModifiedBy(StringlastModifiedBy){
this.lastModifiedBy=lastModifiedBy;
publicDategetCreatedDate(){
returncreatedDate;
publicvoidsetCreatedDate(DatecreatedDate){
this.createdDate=createdDate;
publicDategetLastModifiedDate(){
returnlastModifiedDate;
publicvoidsetLastModifiedDate(DatelastModifiedDate){
this.lastModifiedDate=lastModifiedDate;
publicStringgetRealName(){
returnthis.realName;
publicvoidsetRealName(StringrealName){
this.realName=realName;
publicStringgetUsername(){
returnusername;
publicvoidsetUsername(Stringusername){
this.username=username;
publicStringgetMobile(){
returnmobile;
publicvoidsetMobile(Stringmobile){
this.mobile=mobile;
publicStringgetEmail(){
returnemail;
publicvoidsetEmail(Stringemail){
this.email=email;
@JsonIgnore
publicStringgetPassword(){
returnpassword;
publicvoidsetPassword(Stringpassword){
this.password=password;
publicIntegergetFlag(){
returnflag;
publicvoidsetFlag(Integerflag){
this.flag=flag;
上述User實體對應數據表定義如下:
createtableh_user
idintauto_incrementprimarykey,
usernamevarchar(30)default''notnullcomment'登錄用戶名',
real_namevarchar(30)default''nullcomment'真實姓名',
mobilevarchar(25)default''nullcomment'手機號碼',
emailvarchar(30)default''nullcomment'郵箱',
passwordvarchar(100)default''nullcomment'加密密碼',
flagintdefault'0'nullcomment'用戶標記',
created_byvarchar(50)default'HSystem'nullcomment'創建人',
created_datedatetimedefaultCURRENT_TIMESTAMPnotnull,
last_modified_byvarchar(30)default'HSystem'nullcomment'修改人',
last_modified_datedatetimedefaultCURRENT_TIMESTAMPnotnull,
constraintuser_username_uindexunique(username)
engine=InnoDB;
2.3審計自定義操作
當對實體有新增或保存操作時,系統會自動獲取操作時的系統時間作為創建時間和修改時間。
對于創建者或最后修改這,審計過程會獲取當前登錄系統的用戶信息,當未登錄的情況下,需要指定默認操作,可通過實現AuditorAware類來實現。
下面代碼在未獲取到用戶信息時返回HSystem表示默認為系統操作。
@Configuration
publicclassSpringSecurityAuditorAwareimplementsAuditorAwareString{
finalLoggerlogger=LoggerFactory.getLogger(this.getClass());
@Override
publicOptionalStringgetCurrentAuditor(){
try{
Authenticationauthentication=SecurityContextHolder.getContext().getAuthentication();
if(authenticationinstanceofAnonymousAuthenticationToken){
returnOptional.of("HSystem");
}else{
if(authentication==null){
returnOptional.of("HSystem");
Useruser=(User)authentication.getPrincipal();
returnOptional.of(user.getUsername());
}catch(Exceptionex){
logger.error("getuserAuthenticationfailed:"+ex.getMessage(),ex);
returnOptional.of("HSystem");
2.4應用開啟審計功能
在應用程序入口類添加注解@EnableJpaAuditing開啟審計功能,如下
@SpringBootApplication
//啟用JPA審計功能,自動填充@CreateDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy注解的字段
@EnableJpaAuditing(auditorAwareRef="springSecurityAuditorAware")
publicclassHBackendApplication{
publicstaticvoidmain(String[]args){
SpringApplication.run(HBackendApplication.class,args);
}
注意:如果系統中有多個審計實現,需要指定Bean的名稱,上面案例中使用名稱為springSecurityAuditorAware的bean。
2.5實體操作
定義User實體類的JPA操作接口UserRepository如下
@Repository
publicinterfaceUserRepositoryextendsPagingAndSortingRepositoryUser,Integer,JpaRepositoryUser,Integer{
}
例如創建用戶時代碼如下,不需要顯示設置上面提到的4個屬性
Useruser=newUser();
user.setUsername(username.trim());
user.setPassword(t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 獸醫病理解剖學練習題庫+參考答案解析
- 工程測量員中級習題及答案(附解析)
- 2025年2月高壓電工(運行)模擬習題(附答案解析)
- 2024年2月生命科學模擬練習題(含答案解析)
- 貨代企業品牌建設與市場推廣考核試卷
- 一年級下數學課件-統計-人教
- 糖果品牌形象代言人選擇與效果評估考核試卷
- 液體閃爍計數試劑的制備與應用考核試卷
- 海水淡化處理技術在城市建設中的應用考核試卷
- 大班組教育教學學期末總結
- 超長混凝土結構無縫(跳倉法)施工技術課件
- 風電場工作安全培訓課件
- 供水管道工程(監理規劃)
- 廣西壯族自治區桂林市各縣區鄉鎮行政村村莊村名明細及行政區劃劃分代碼居民村民委員會
- 《單跳雙落》說課稿范文
- 水泥物資供應、運輸及售后服務方案
- [江西]20萬噸自來水廠工藝圖紙設計(附58頁設計方案)
- 山西省義務教育階段中小學文科教學儀器設備配備標準
- 高效液相色譜法分析(紐甜)原始記錄
- DB5132∕T 76-2022 熊貓級民宿的劃分與評定
- 魔芋栽培技術講課PPT課件
評論
0/150
提交評論