亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot中@component注解的使用實例

 更新時間:2022年03月23日 15:42:22   作者:天蒙蒙亮  
這篇文章主要介紹了springboot中@component注解的使用實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@component注解的使用

配置響應頭的內容。

方式一

直接在攔截器里配置響應頭內容。

/**
?* 攔截器--用戶身份確認。
?*/
public class RestInterceptor implements HandlerInterceptor {?? ?
?? ?private static final Logger log = LoggerFactory.getLogger(RestInterceptor.class);
?? ?private static final String tokenHeader = "Authorization";
?
?? ?/**?
? ? ? ? ?* ?返回值:true表示繼續(xù)流程(如調用下一個攔截器或處理器);false表示流程中斷(如登錄檢查失?。?,不會繼續(xù)調用其他的攔截器或處理器,此時我們需要通過response來產生響應;?
?? ? */
?? ?public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
?? ??? ?log.info("攔截請求");
?? ??? ?//響應頭
?? ??? ?response.setHeader("Access-Control-Allow-Origin", "*");
?? ??? ?response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type,authorization");
?? ??? ?response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS");
?? ??? ?
?? ??? ?if(request.getMethod().equals("OPTIONS")){
?? ??? ??? ?response.setStatus(204);
?? ??? ??? ?return true;
?? ??? ?}?? ??? ?
?? ??? ?log.info("調用接口:method=" +request.getParameter("method")+",params="+JSON.toJSONString(request.getParameterMap()));
?? ??? ?
//?? ??? ?HandlerMethod handlerMethod = (HandlerMethod)handler;
//?? ??? ?RequestAuth requestAuth = handlerMethod.getMethodAnnotation(RequestAuth.class);
//?? ??? ?if(requestAuth!=null && requestAuth.auth()==false){ //非驗證API?
//?? ??? ??? ?return true;//跳過驗證
//?? ??? ?}
?? ??? ?//驗證
//?? ??? ?String token = request.getHeader(tokenHeader);
//?? ??? ?if(token == null || token.equals("")) {
//?? ??? ??? ?log.info("沒有找到token");
//?? ??? ??? ?throw new BusinessException(ResMsg.CODE_TOKEN_NOTFOUND, "沒有找到token");
//?? ??? ?} else {
//?? ??? ??? ?JWSObject jwsObject = JWSObject.parse(token);
//?? ??? ??? ?Payload payload = jwsObject.getPayload();
//?? ??? ??? ?JSONObject obj = payload.toJSONObject();
?? ??? ??? ?
//?? ??? ??? ?String roleNames = String.valueOf(obj.get("roleNames"));
//?? ??? ??? ?Authentication auth = new Authentication();
//?? ??? ??? ?if(obj.containsKey("platformId")) {
//?? ??? ??? ??? ?Long platformId = Long.valueOf(String.valueOf(obj.get("platformId")));
//?? ??? ??? ??? ?auth.setPlatformId(platformId);
//?? ??? ??? ?}
//?? ??? ??? ?if(obj.containsKey("userid")) {
//?? ??? ??? ??? ?Long userId = Long.valueOf(String.valueOf(obj.get("userid")));
//?? ??? ??? ??? ?auth.setUserId(userId);
//?? ??? ??? ?}
//?? ??? ??? ?if(obj.containsKey("orgId")) {
//?? ??? ??? ??? ?Long orgId = Long.valueOf(String.valueOf(obj.get("orgId")));
//?? ??? ??? ??? ?auth.setOrgId(orgId);
//?? ??? ??? ?}
//?? ??? ??? ?if(obj.containsKey("orgid")) {//為兼容老版本的接口
//?? ??? ??? ??? ?String orgid = String.valueOf(obj.get("orgid"));
//?? ??? ??? ??? ?orgid = orgid.replace(",", "");
//?? ??? ??? ??? ?Long orgId = Long.valueOf(orgid);
//?? ??? ??? ??? ?auth.setOrgId(orgId);
//?? ??? ??? ?}
//?? ??? ??? ?auth.setRoleNames(roleNames);
//?? ??? ??? ?SecurityContext.setContext(auth);
//?? ??? ??? ?JwtUtil.verify(jwsObject);
//?? ??? ?}
?? ??? ?return true;
?? ?}
?
?? ?public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
?? ??? ??? ?ModelAndView modelAndView) throws Exception {
?? ??? ?//log.info("處理中");
?? ?}
?
?? ?public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
?? ??? ??? ?throws Exception {
?? ??? ?if(ex != null) {
?? ??? ??? ?log.error("接口處理異常:"+ex);
?? ??? ??? ?throw ex;
?? ??? ?}
?? ?}
}

方式二

使用@component注解,將普通JavaBean實例化到spring容器中。

public class RestInterceptor implements HandlerInterceptor {?? ?
?? ?private static final Logger log = LoggerFactory.getLogger(RestInterceptor.class);
?? ?private static final String tokenHeader = "Authorization";
?
?? ?/**?
? ? ? ? ?* 返回值:true表示繼續(xù)流程(如調用下一個攔截器或處理器);false表示流程中斷(如登錄檢查失敗),不會繼續(xù)調用其他的攔截器或處理器,此時我們需要通過response來產生響應;?
?? ? */
?? ?public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
?? ??? ?log.info("攔截請求");
?? ??? ? ?
?? ??? ?if(request.getMethod().equals("OPTIONS")){
?? ??? ??? ?response.setStatus(204);
?? ??? ??? ?return true;
?? ??? ?}?? ??? ?
?? ??? ?log.info("調用接口:method=" +request.getParameter("method")+",params="+JSON.toJSONString(request.getParameterMap()));?? ??? ??
?? ??? ?return true;
?? ?}
?
?? ?public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
?? ??? ??? ?ModelAndView modelAndView) throws Exception {
?? ??? ?//log.info("處理中");
?? ?}
?
?? ?public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
?? ??? ??? ?throws Exception {
?? ??? ?if(ex != null) {
?? ??? ??? ?log.error("接口處理異常:"+ex);
?? ??? ??? ?throw ex;
?? ??? ?}
?? ?}
}

定義 SimpleCORSFilter.java 類, 使用@component注解

@Component
public class SimpleCORSFilter implements Filter {
?? ?public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
? ? ? ? HttpServletResponse response = (HttpServletResponse) res;
? ? ? ? response.setHeader("Access-Control-Allow-Origin", "*");
? ? ? ? response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
? ? ? ? response.setHeader("Access-Control-Max-Age", "3600");
? ? ? ? response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type,authorization");
? ? ? ? chain.doFilter(req, res);
? ? }
?
? ? public void init(FilterConfig filterConfig) {}?
? ? public void destroy() {}? ??
}

兩種方式都可以完成響應。

@component注解有什么作用

用一句話概括

被@Component注解標識的類,會被納入Spring容器中統一管理,好處是什么?一句話概括:你不用自己new了!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java讀取properties配置文件時,出現中文亂碼的解決方法

    Java讀取properties配置文件時,出現中文亂碼的解決方法

    下面小編就為大家?guī)硪黄狫ava讀取properties配置文件時,出現中文亂碼的解決方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Mybatis-plus全局id生成策略詳解

    Mybatis-plus全局id生成策略詳解

    這篇文章主要介紹了Mybatis-plus全局id生成策略詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java多線程并發(fā)編程(互斥鎖Reentrant Lock)

    Java多線程并發(fā)編程(互斥鎖Reentrant Lock)

    這篇文章主要介紹了ReentrantLock 互斥鎖,在同一時間只能被一個線程所占有,在被持有后并未釋放之前,其他線程若想獲得該鎖只能等待或放棄,需要的朋友可以參考下
    2017-05-05
  • 解決Callable的對象中,用@Autowired注入別的對象失敗問題

    解決Callable的對象中,用@Autowired注入別的對象失敗問題

    這篇文章主要介紹了解決Callable的對象中,用@Autowired注入別的對象失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot整合Elasticsearch游標查詢的示例代碼(scroll)

    SpringBoot整合Elasticsearch游標查詢的示例代碼(scroll)

    這篇文章主要介紹了SpringBoot整合Elasticsearch游標查詢(scroll),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java中調用SQL Server存儲過程詳解

    Java中調用SQL Server存儲過程詳解

    這篇文章主要介紹了Java中調用SQL Server存儲過程詳解,本文講解了使用不帶參數的存儲過程、使用帶有輸入參數的存儲過程、使用帶有輸出參數的存儲過程、使用帶有返回狀態(tài)的存儲過程、使用帶有更新計數的存儲過程等操作實例,需要的朋友可以參考下
    2015-01-01
  • spring的@Transactional注解用法解讀

    spring的@Transactional注解用法解讀

    這篇文章主要介紹了spring的@Transactional注解用法解讀,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 詳解ZXing-core生成二維碼的方法并解析

    詳解ZXing-core生成二維碼的方法并解析

    本文給大家介紹ZXing-core生成二維碼的方法并解析,主要用到goggle發(fā)布的jar來實現二維碼功能,對此文感興趣的朋友一起學習吧
    2016-05-05
  • IntelliJ IDEA右鍵文件夾沒有Java Class文件的原因及解決方法

    IntelliJ IDEA右鍵文件夾沒有Java Class文件的原因及解決方法

    這篇文章主要介紹了IntelliJ IDEA右鍵文件夾沒有Java Class文件的原因及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • DynamicDataSource怎樣解決多數據源的事務問題

    DynamicDataSource怎樣解決多數據源的事務問題

    這篇文章主要介紹了DynamicDataSource怎樣解決多數據源的事務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論