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

SpringBoot中實(shí)現(xiàn)代理方式

 更新時間:2023年06月15日 17:05:44   作者:看山也看水  
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)代理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot實(shí)現(xiàn)代理

功能

定義一個功能,使指定的方法執(zhí)行前后輸出日志信息。

1. 定義一個注解,添加的方法上具有該功能,或者添加到類上,類下的所有方法都具有該功能

@Target( {ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface LogAround {
}

2. 實(shí)現(xiàn)PointCut接口,找出標(biāo)注注解的方法或類

// 這里是直接繼承了一個便捷基類,實(shí)現(xiàn) matches 方法
public class LogAroundPointcut extends StaticMethodMatcherPointcut {
	@Override
	public boolean matches(Method method, Class<?> targetClass) {
		return AnnotatedElementUtils.hasAnnotation(targetClass, LogAround.class) ||
				AnnotatedElementUtils.hasAnnotation(method, LogAround.class);
	}
}

3. 實(shí)現(xiàn) Advice,定義增強(qiáng)行為

// 這里繼承了 MethodInterceptor,方法攔截。前后打印日志
public class LogAroundInterceptor implements MethodInterceptor {
	@Nullable
	@Override
	public Object invoke(@Nonnull MethodInvocation invocation) throws Throwable {
		System.out.println("before method invoke log....");
		Method method = invocation.getMethod();
		Object[] args = invocation.getArguments();
		Object target = invocation.getThis();
		Object invoke = method.invoke(target, args);
		System.out.println("after method invoke log....");
		return invoke;
	}
}

4. 定義一個 Advisor ,把這兩個組合起來,并添加到 Spring 中

@Component
public class LogAroundPointcutAdvisor extends AbstractPointcutAdvisor {
	@Override
	public Pointcut getPointcut() {
		return new LogAroundPointcut();
	}
	@Override
	public Advice getAdvice() {
		return new LogAroundInterceptor();
	}
	@Override
	public boolean isPerInstance() {
		return false;
	}
}

5. 測試bean

@Component
public class AopDemo {
	@LogAround
	public static int sum(int i1, int i2) {
		return i1 + i2;
	}
}

6. 測試結(jié)果

前后有打印日志,代理成功

SpringBoot實(shí)現(xiàn)反向代理

背景:在前后端分離的項(xiàng)目中,有一天后端項(xiàng)目因?yàn)槟承┰虿荒鼙┞对诠W(wǎng)地址,此時為了修改最少,利用反向代理技術(shù)進(jìn)行實(shí)現(xiàn)。

這種不是解決方案,曲線救國。

1. 引入依賴

? <dependency>
?? ? <groupId>org.mitre.dsmiley.httpproxy</groupId>
? ?? ? <artifactId>smiley-http-proxy-servlet</artifactId>
? ??? ? <version>1.12</version>
</dependency>

2. 配置文件

將本地項(xiàng)目的 /baidu/* 下的請求轉(zhuǎn)發(fā)至https://baidu.com

/baidu/* 前面一定要加 /

proxy:
? baidu:
? ? url: /baidu/*
? ? target_url: https://baidu.com

3. 配置代理

package athena.gateway.app.banshi;
import org.mitre.dsmiley.httpproxy.ProxyServlet;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SolrProxyServletConfiguration {
? ? @Value("${proxy.baidu.url}")
? ? private String url;
? ? @Value("${proxy.baidu.target_url}")
? ? private String targetUrl;
? ? @Bean
? ? public ServletRegistrationBean servletRegistrationBean() {
? ? ? ? ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), url);
? ? ? ? servletRegistrationBean.setName("百度");
? ? ? ? servletRegistrationBean.addInitParameter("targetUri", targetUrl);
? ? ? ? servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, String.valueOf(true));
? ? ? ? return servletRegistrationBean;
? ? }
}

總結(jié)

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

相關(guān)文章

  • SpringBoot基于自定義注解實(shí)現(xiàn)切面編程

    SpringBoot基于自定義注解實(shí)現(xiàn)切面編程

    這篇文章主要介紹了SpringBoot基于自定義注解實(shí)現(xiàn)切面編程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 詳解Java使用super和this來重載構(gòu)造方法

    詳解Java使用super和this來重載構(gòu)造方法

    這篇文章主要介紹了詳解Java使用super和this來重載構(gòu)造方法的相關(guān)資料,這里提供實(shí)例來幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 詳解Java如何利用數(shù)字描述更多的信息

    詳解Java如何利用數(shù)字描述更多的信息

    在數(shù)據(jù)庫里面?,通常我們會用數(shù)字的遞進(jìn)來描述狀態(tài)等信息?,?但是如果想進(jìn)行更復(fù)雜的操作?,?就有必要對二進(jìn)制有一定理解了。本文就來趣味性的探討一下?,?如何通過更少的空間描述更多的信息
    2022-09-09
  • Java實(shí)現(xiàn)將Word和PDF轉(zhuǎn)成一張垂直拼接長圖的工具類

    Java實(shí)現(xiàn)將Word和PDF轉(zhuǎn)成一張垂直拼接長圖的工具類

    這篇文章主要為大家詳細(xì)介紹了如何使用Java編寫一個將Word和PDF轉(zhuǎn)成一張垂直拼接長圖的工具類,支持doc和docx,有需要的小伙伴可以了解下
    2025-10-10
  • Java8 Instant 時間戳實(shí)例講解

    Java8 Instant 時間戳實(shí)例講解

    Instant類是Java8 中補(bǔ)充的一個 時間戳類,nstant 可以使用靜態(tài)方法 now()或者of()方法來創(chuàng)建一個實(shí)例對象,本文通過實(shí)例代碼講解Java8 Instant 時間戳,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Java之Spring簡單的讀取和存儲對象

    Java之Spring簡單的讀取和存儲對象

    這篇文章主要介紹了Spring的讀取和存儲對象,獲取 bean 對象也叫做對象裝配,是把對象取出來放到某個類中,有時候也叫對象注?,想進(jìn)一步了解的同學(xué)可以參考本文
    2023-04-04
  • JAVA中Spring Security示例及常見問題

    JAVA中Spring Security示例及常見問題

    文章概述Spring Security OAuth2與JWT模塊的版本兼容性及遷移建議,強(qiáng)調(diào)2.5.x支持JDK8但已棄用,推薦新項(xiàng)目使用SpringAuthorizationServer(Spring Boot3.x+),并指出依賴沖突、配置示例及密鑰安全注意事項(xiàng),感興趣的朋友一起看看吧
    2025-07-07
  • SpringBoot+layui實(shí)現(xiàn)文件上傳功能

    SpringBoot+layui實(shí)現(xiàn)文件上傳功能

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。這篇文章主要介紹了SpringBoot+layui實(shí)現(xiàn)文件上傳,需要的朋友可以參考下
    2018-09-09
  • javaweb中靜態(tài)文件的常用處理方法匯總

    javaweb中靜態(tài)文件的常用處理方法匯總

    這篇文章主要介紹了javaweb中靜態(tài)文件的常用處理方法匯總,非常實(shí)用的技巧,需要的朋友可以參考下
    2014-08-08
  • 淺談Java編程ToString()方法重寫的意義

    淺談Java編程ToString()方法重寫的意義

    這篇文章主要介紹了淺談Java編程ToString()方法重寫的意義,還是挺不錯的,這里分享給大家,供朋友們學(xué)習(xí)和參考。
    2017-10-10

最新評論

万年县| 伊宁市| 阿克| 温州市| 弥勒县| 海原县| 日照市| 德州市| 志丹县| 丹巴县| 上思县| 中山市| 古丈县| 宁波市| 孝义市| 汽车| 昂仁县| 城步| 渝北区| 玉环县| 扎囊县| 桐庐县| 芜湖县| 黄陵县| 遂溪县| 米林县| 逊克县| 上蔡县| 芒康县| 繁峙县| 竹山县| 威远县| 航空| 交城县| 虹口区| 社旗县| 台南市| 多伦县| 玛曲县| 芷江| 鄱阳县|