<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      springboot~jpa審計(jì)字段的自動(dòng)填充

      在使用 Spring Data JPA 中的 @CreatedDate 注解時(shí),如果希望自動(dòng)填充創(chuàng)建時(shí)間字段,通常需要結(jié)合 @EntityListeners(AuditingEntityListener.class) 注解一起使用。這是因?yàn)?@CreatedDate 等審計(jì)注解通常與審計(jì)事件監(jiān)聽器(AuditingEntityListener)一起工作,用于處理實(shí)體的審計(jì)信息。

      審計(jì)字段-自動(dòng)填充

      當(dāng)您定義一個(gè)實(shí)體類(例如 EntityBase)并希望使用 @CreatedDate 注解來自動(dòng)設(shè)置創(chuàng)建時(shí)間時(shí),可以按照以下步驟操作:

      1. 在實(shí)體類中添加 @CreatedDate 注解,實(shí)體可抽象成一個(gè)類,如EntityBase,AuditBase等
      @Getter
      @Setter
      @MappedSuperclass
      @EntityListeners(AuditingEntityListener.class)
      public abstract class EntityBase {
      
      	/**
      	 * 創(chuàng)建人
      	 */
      	@Column(name = "created_by")
      	@CreatedBy
      	private String createdBy;
      
      	/**
      	 * 修改人
      	 */
      	@Column(name = "updated_by")
      	@LastModifiedBy
      	private String updatedBy;
      
      	/**
      	 * 創(chuàng)建時(shí)間
      	 */
      	@Column(name = "created_time")
      	@CreatedDate
      	private java.time.LocalDateTime createdTime;
      
      	/**
      	 * 更新時(shí)間
      	 */
      	@Column(name = "update_time")
      	@LastModifiedDate
      	private java.time.LocalDateTime updateTime;
      
      }
      
      1. 確保審計(jì)事件監(jiān)聽器生效
        確保 AuditingEntityListener 能夠正確監(jiān)聽實(shí)體類的審計(jì)事件,并在保存實(shí)體對象時(shí)自動(dòng)填充相應(yīng)的審計(jì)信息,包括創(chuàng)建時(shí)間等。

      2. 實(shí)現(xiàn)AuditorAware接口,返回當(dāng)前登錄的用戶,以便填充create_by字段,同時(shí)開啟審計(jì)功能@EnableJpaAuditing:

      @EnableJpaAuditing
      @Component
      public class AuditorAwareImpl implements AuditorAware {
      
      	@Override
      	public Optional getCurrentAuditor() {
      		return Optional.of("lind");
      	}
      
      }
      
      

      通過以上步驟,您可以在訂閱 EntityBase 實(shí)體類時(shí)使用 @CreatedDate 注解,并結(jié)合 @EntityListeners(AuditingEntityListener.class) 注解來自動(dòng)填充創(chuàng)建時(shí)間字段,從而實(shí)現(xiàn)審計(jì)功能。

      AuditorAware獲取請求頭信息

      要在實(shí)現(xiàn) AuditorAware 接口的 getCurrentAuditor() 方法中獲取當(dāng)前請求頭(HTTP Header)中的變量,您可以借助 Spring 提供的 RequestContextHolderServletRequestAttributes 來訪問當(dāng)前請求的上下文信息。具體步驟如下:

      1. 獲取當(dāng)前請求的 HttpServletRequest 對象

        • 首先,您需要從 RequestContextHolder.getRequestAttributes() 獲取當(dāng)前請求的 ServletRequestAttributes 對象。
        • 然后通過 ServletRequestAttributes 對象獲取當(dāng)前的 HttpServletRequest 對象。
      2. 從 HttpServletRequest 中獲取請求頭信息

        • HttpServletRequest 對象中,您可以使用 getHeader() 方法來獲取指定名稱的請求頭信息。

      下面是一個(gè)示例代碼,演示了如何在 AuditorAwaregetCurrentAuditor() 方法中獲取當(dāng)前請求頭中的變量:

      import org.springframework.data.domain.AuditorAware;
      import org.springframework.web.context.request.RequestContextHolder;
      import org.springframework.web.context.request.ServletRequestAttributes;
      
      import javax.servlet.http.HttpServletRequest;
      import java.util.Optional;
      
      @EnableJpaAuditing
      @Component
      public class CustomAuditorAware implements AuditorAware<String> {
      
          @Override
          public Optional<String> getCurrentAuditor() {
              ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
              if (attributes != null) {
                  HttpServletRequest request = attributes.getRequest();
                  String customHeaderValue = request.getHeader("Custom-Header");
                  return Optional.ofNullable(customHeaderValue);
              }
              return Optional.empty();
          }
      }
      

      如果是基于netty的WEB框架,需要使用下面代碼獲取請求頭參數(shù)

      @EnableJpaAuditing
      @Component
      public class AuditorAwareImpl implements AuditorAware<String> {
      
      	@Override
      	public Optional<String> getCurrentAuditor() {
      		Object request = RpcContext.getServiceContext().getRequest();
      		if (request != null) {
      			NettyRequestFacade requestFacade = (NettyRequestFacade) request;
      			if (requestFacade != null && requestFacade.getHeader("preferred_username") != null) {
      				return Optional.of(requestFacade.getHeader("preferred_username"));
      			}
      		}
      		return Optional.of("none");
      	}
      
      }
      

      在上述代碼中,我們通過 RequestContextHolder 獲取當(dāng)前請求的上下文信息,并從中提取出請求頭中名為 Custom-Header 的自定義變量值。最后將該值作為審計(jì)人員信息返回。

      請注意,在使用 RequestContextHolder 時(shí),確保上下文中包含請求信息,否則可能會(huì)出現(xiàn)空指針異常。另外,這種方式適用于基于 Spring MVC 或 Spring WebFlux 的應(yīng)用。

      posted @ 2024-05-30 13:44  張占嶺  閱讀(543)  評(píng)論(2)    收藏  舉報(bào)
      主站蜘蛛池模板: 我国产码在线观看av哈哈哈网站| 精品国产欧美一区二区三区在线 | 国产成人精品中文字幕| 亚洲精品麻豆一二三区| 国偷自产一区二区三区在线视频| 日韩区二区三区中文字幕| 国产精品 无码专区| 国产中文三级全黄| 国产精品久久无码不卡黑寡妇| 亚洲国产精品成人一区二区在线| 性奴sm虐辱暴力视频网站| 日韩av不卡一区二区在线| 中文字幕无码专区一VA亚洲V专| 亚洲精品成人一二三专区| 国产三级精品三级在线看| 色哟哟www网站入口成人学校| 亚洲精品国产字幕久久麻豆| 亚洲精品一区二区三区综合| 在线天堂中文www官网| 亚洲男人天堂一级黄色片| 梁山县| 成人免费在线播放av| 久久天天躁狠狠躁夜夜婷| 日韩美少妇大胆一区二区| 人妻少妇精品系列一区二区| 在线精品国产中文字幕| 国产日韩久久免费影院| 大地资源高清播放在线观看| 久章草在线毛片视频播放 | 无码人妻一区二区三区AV| 精品日韩亚洲AV无码| 熟妇好大好深好满好爽| 国产jlzzjlzz视频免费看| 亚洲精品天天影视综合网| 亚洲偷自拍国综合| 日韩国产成人精品视频| 成人免费毛片aaaaaa片| 四川丰满少妇无套内谢| 亚洲高清WWW色好看美女| 铜山县| 国产日产免费高清欧美一区|