最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot中@component注解的使用實(shí)例

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

@component注解的使用

配置響應(yīng)頭的內(nèi)容。

方式一

直接在攔截器里配置響應(yīng)頭內(nèi)容。

/**
?* 攔截器--用戶身份確認(rèn)。
?*/
public class RestInterceptor implements HandlerInterceptor {?? ?
?? ?private static final Logger log = LoggerFactory.getLogger(RestInterceptor.class);
?? ?private static final String tokenHeader = "Authorization";
?
?? ?/**?
? ? ? ? ?* ?返回值:true表示繼續(xù)流程(如調(diào)用下一個攔截器或處理器);false表示流程中斷(如登錄檢查失敗),不會繼續(xù)調(diào)用其他的攔截器或處理器,此時我們需要通過response來產(chǎn)生響應(yīng);?
?? ? */
?? ?public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
?? ??? ?log.info("攔截請求");
?? ??? ?//響應(yīng)頭
?? ??? ?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("調(diào)用接口: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){ //非驗(yàn)證API?
//?? ??? ??? ?return true;//跳過驗(yàn)證
//?? ??? ?}
?? ??? ?//驗(yàn)證
//?? ??? ?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實(shí)例化到spring容器中。

public class RestInterceptor implements HandlerInterceptor {?? ?
?? ?private static final Logger log = LoggerFactory.getLogger(RestInterceptor.class);
?? ?private static final String tokenHeader = "Authorization";
?
?? ?/**?
? ? ? ? ?* 返回值:true表示繼續(xù)流程(如調(diào)用下一個攔截器或處理器);false表示流程中斷(如登錄檢查失?。粫^續(xù)調(diào)用其他的攔截器或處理器,此時我們需要通過response來產(chǎn)生響應(yīng);?
?? ? */
?? ?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("調(diào)用接口: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() {}? ??
}

兩種方式都可以完成響應(yīng)。

@component注解有什么作用

用一句話概括

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

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot接口服務(wù),防刷、防止請求攻擊,AOP實(shí)現(xiàn)方式

    springboot接口服務(wù),防刷、防止請求攻擊,AOP實(shí)現(xiàn)方式

    本文介紹了如何使用AOP防止Spring?Boot接口服務(wù)被網(wǎng)絡(luò)攻擊,通過在pom.xml中加入AOP依賴,創(chuàng)建自定義注解類和AOP切面,以及在業(yè)務(wù)類中使用這些注解,可以有效地對接口進(jìn)行保護(hù),測試表明,這種方法有效地防止了網(wǎng)絡(luò)攻擊
    2024-11-11
  • JAVA中StringBuffer與String的區(qū)別解析

    JAVA中StringBuffer與String的區(qū)別解析

    這篇文章主要介紹了JAVA中StringBuffer與String的區(qū)別解析,需要的朋友可以參考下
    2014-02-02
  • 一篇文章帶你了解MySQL數(shù)據(jù)庫基礎(chǔ)

    一篇文章帶你了解MySQL數(shù)據(jù)庫基礎(chǔ)

    這篇文章主要介紹了MySql數(shù)據(jù)庫基礎(chǔ)知識點(diǎn),總結(jié)整理了mysql數(shù)據(jù)庫基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下
    2021-08-08
  • 深入理解java泛型詳解

    深入理解java泛型詳解

    這篇文章主要介紹了Java中的泛型詳解,什么是泛型,作用以及基礎(chǔ)實(shí)例等,喜歡的朋友可以參考
    2017-04-04
  • Android中幾種圖片特效的處理的實(shí)現(xiàn)方法

    Android中幾種圖片特效的處理的實(shí)現(xiàn)方法

    這篇文章主要介紹了 Android中幾種圖片特效的處理的實(shí)現(xiàn)方法的相關(guān)資料,這里有放大縮小圖片,獲得圓角圖片,獲得帶倒影圖片的幾種方法,需要的朋友可以參考下
    2017-08-08
  • jdk動態(tài)代理和cglib動態(tài)代理詳解

    jdk動態(tài)代理和cglib動態(tài)代理詳解

    本篇文章主要介紹了深度剖析java中JDK動態(tài)代理機(jī)制 ,動態(tài)代理避免了開發(fā)人員編寫各個繁鎖的靜態(tài)代理類,只需簡單地指定一組接口及目標(biāo)類對象就能動態(tài)的獲得代理對象
    2021-07-07
  • 解析HashMap中的put方法執(zhí)行流程

    解析HashMap中的put方法執(zhí)行流程

    在Java集合中,HashMap的重要性不言而喻,作為一種存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),它在日常開發(fā)中有著非常多的應(yīng)用場景,也是面試中的高頻考點(diǎn),本篇文章就來分析一下HashMap集合中的put方法
    2021-12-12
  • 詳解JVM的內(nèi)存對象介紹[創(chuàng)建和訪問]

    詳解JVM的內(nèi)存對象介紹[創(chuàng)建和訪問]

    這篇文章主要介紹了JVM的內(nèi)存對象介紹[創(chuàng)建和訪問],文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java父線程(或是主線程)等待所有子線程退出的實(shí)例

    Java父線程(或是主線程)等待所有子線程退出的實(shí)例

    下面小編就為大家分享一篇Java父線程(或是主線程)等待所有子線程退出的實(shí)例,具有很好的參考價值,希望對大家有所幫助
    2017-11-11
  • JAVA代理,靜態(tài),動態(tài)詳解

    JAVA代理,靜態(tài),動態(tài)詳解

    這篇文章主要介紹了Java靜態(tài)代理和動態(tài)代理總結(jié),非常不錯,具有參考借鑒價值,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09

最新評論

抚州市| 和静县| 古丈县| 保德县| 辰溪县| 花莲县| 永顺县| 长阳| 呈贡县| 公安县| 东兴市| 金堂县| 北票市| 临汾市| 旅游| 崇义县| 盈江县| 襄垣县| 神木县| 彰化市| 辽源市| 彰化县| 红原县| 新兴县| 绍兴市| 淮安市| 东台市| 桃园市| 海阳市| 龙岩市| 朔州市| 米林县| 招远市| 兴业县| 普兰店市| 保德县| 嘉黎县| 宿松县| 横山县| 股票| 衡水市|