starter是springboot的乙個啟動器,引入這個啟動器就可以使用想用的功能。
類似spring-boot-starter-web等功能,現在模擬乙個redis快取啟動器,實現功能:
其他專案引入這個元件依賴,在配置檔案中加上redis連線配置後
1.可以直接使用redis工具類操作redis存資料,不用在另外的專案中再弄乙個工具類
2.可以在自定義快取註解在指定方法上存放方法返回結果,不用**中嵌入快取儲存邏輯
3.spring專案和spring-boot專案都可以使用,方式略有不同
缺點:元件比較簡單,只有redis一層快取,沒有設計redis,mongdb,encache的多級快取
關於redis集群下元件使用待完善
spring專案使用:注意開啟了動態**,注意方法上有自定義快取註解,注意掃瞄了依賴專案的包
public static void main(string args)
}
@configuration
@componentscan(value=)
@enableaspectjautoproxy
public class myconfig
@service
public class testserviceimpl2
}
spring-boot專案使用:同樣掃瞄依賴包,有redis連線配置,有自定義註解
/*** 載入其他專案下的bean
* @author yp-tc-m-7129
*/@componentscan(value=)
public static void main(string args)
}
@service
public class testserviceimpl2
}
#zidingyi redis huancun peizhi
my.redis.host=127.0.0.1
my.redis.port=7011
#my.redis.database=0
#my.redis.timeout=2000
#my.redis.maxactive=8
#my.redis.maxwait=-1
#my.redis.maxidle=5
#my.redis.minidle=0
元件主要**:
乙個切面,攔截有這個自定義註解的方法,redis儲存形式是key,json字串形式
@component
@aspect
public class rediscacheaspect
/*** 獲取快取的key key 定義在註解上,支援spel表示式
* * @param pjp
* @return
*/private string getseldefkey(proceedingjoinpoint pjp)
@around("pointcut()")
public object rediscachemethod(proceedingjoinpoint pjp) throws throwable catch (throwable e)
} /**
* 把方法所在全路徑+方法名+引數作為乙個關鍵key,不會重複
*/string key = getseldefkey(pjp);
//獲取註解引數
method method = getmethod(pjp);
rediscache rediscache = method.getannotation(rediscache.class);
// 獲取方法的返回型別,讓快取可以返回正確的型別
class returntype = ((methodsignature) pjp.getsignature()).getreturntype();
object result = redistoolutils.get(key);
if (result == null)
} else
return result; }
/*** 獲取被攔截方法物件
* methodsignature.getmethod() 獲取的是頂層介面或者父類的方法物件 而快取的註解在實現類的方法上
* 所以應該使用反射獲取當前物件的方法物件
*/public method getmethod(proceedingjoinpoint pjp)
}
docker 啟動乙個 redis
d 以守護執行緒的方式執行 後台執行 i 以互動模式執行容器 t 為容器重新分配乙個偽輸入終端 p 對映容器服務的 6379 埠到宿主機的 6379 埠。外部可以直接通過宿主機ip 6379 訪問到 redis 的服務。未加 it可能會執行不起來因為,docker容器後台執行,就必須有乙個前台程序,...
Vue 乙個元件引用另乙個元件
有些時候需要這麼做,比如,我想在首頁載入輪播元件,但是又不想全域性註冊 因為不是每個頁面都需要輪播功能 方法1 1 template 2 div 34 testcomponent testcomponent 5div 6template 78 script 9 1.先使用import匯入你要在該元件...
模擬乙個js new乙個物件的過程
function person person.prototype.getname function function createobj var a createobj person console.log a 上述 createobj 模擬了js new乙個物件的過程,從該函式的 中可以清晰的看到...