MattRaible’sItelliJIDEALiveTemplates
ThesearetheItelliJIDEALiveTemplatesthatI’veusedimaydemosadscreecastsovertheyears.
IusedItelliJ’sshariglivetemplatesfeature,tocreateidea-settigs.jar.Youshouldbeabletoimport"MattRaible’sShortcuts"usigthefollowigsteps:
OtheFilemeu,clickImportSettigs.
SpecifythepathtotheJARfilewiththeexportedlivetemplatecofiguratio.
ItheImportSettigsdialogbox,selecttheLivetemplatescheckboxadclickOK.
AfterrestartigItelliJIDEA,youwillseetheimportedlivetemplatesotheLiveTemplatespageoftheSettigs/PreferecesDialog.
DowloadItelliJIDEAtoday!It’saspectacularIDEAforJava,Kotli,TypeScript,JavaScript,S/CSS,adHTML.
Ifyou’dratherotimportallofmytemplates,youcacloethisprojectadopeitiItelliJ(withtheAsciidoctorplugiistalled).Youshouldbeabletoeditthisfileadaddtheshortcutsbelowaslivetemplates(Tools>SaveasLiveTemplate).Makesuretosetthefiletypetomatchthelaguage.
SprigBootboot-etity
@javax.persistece.Etityclass$etity${@javax.persistece.Id@javax.persistece.GeeratedValueprivatejava.lag.Logid;privatejava.lag.Strigame;public$etity$(){}public$etity$(Strigame){this.ame=ame;}publicjava.lag.LoggetId(){returid;}publicvoidsetId(java.lag.Logid){this.id=id;}publicjava.lag.StriggetName(){returame;}publicvoidsetName(java.lag.Strigame){this.ame=ame;}@java.lag.Overridepublicjava.lag.StrigtoStrig(){retur"$etity${"+"id="+id+",ame='"+ame+'\''+'}';}}boot-etity-lombok
@lombok.Data@lombok.AllArgsCostructor@lombok.NoArgsCostructor@javax.persistece.Etityclass$ame${public$ame$(java.lag.Strigame){this.ame=ame;}@javax.persistece.Id@javax.persistece.GeeratedValueprivatejava.lag.Logid;privatejava.lag.Strigame;}boot-h2
<depedecy><groupId>com.h2database</groupId><artifactId>h2</artifactId></depedecy>boot-sql
isertito$etity$(ame)values('First');isertito$etity$(ame)values('Secod');boot-repository
iterface$etity$RepositoryextedsJpaRepository<$etity$,java.lag.Log>{}boot-commad
@org.sprigframework.stereotype.Compoetclass$etity$CommadLieRuerimplemetsorg.sprigframework.boot.CommadLieRuer{privatefial$etity$Repositoryrepository;public$etity$CommadLieRuer($etity$Repositoryrepository){this.repository=repository;}@java.lag.Overridepublicvoidru(java.lag.Strig...strigs)throwsjava.lag.Exceptio{repository.fidAll().forEach(System.out::pritl);}}boot-add
//Topbeersfromhttps://www.beeradvocate.com/lists/top/Stream.of("KetuckyBruchBradStout","GoodMorig","VeryHazy","KigJulius","Budweiser","CoorsLight","PBR").forEach(ame->repository.save(ewBeer(ame)));boot-cotroller
@org.sprigframework.web.bid.aotatio.RestCotrollerclass$etity$Cotroller{private$etity$Repositoryrepository;public$etity$Cotroller($etity$Repositoryrepository){this.repository=repository;}@org.sprigframework.web.bid.aotatio.GetMappig("/$uriMappig$")java.util.Collectio<$etity$>list(){returrepository.fidAll();}}boot-good
@GetMappig("/good-beers")publicCollectio<Beer>goodBeers(){returrepository.fidAll().stream().filter(this::isGreat).collect(Collectors.toList());}privatebooleaisGreat(Beerbeer){retur!beer.getName().equals("Budweiser")&&!beer.getName().equals("CoorsLight")&&!beer.getName().equals("PBR");}okta-mave-boot
<depedecy><groupId>com.okta.sprig</groupId><artifactId>okta-sprig-boot-starter</artifactId><versio>$versio$</versio></depedecy>sprig-oauth2-yaml
sprig:security:oauth2:cliet:registratio:okta:cliet-id:$clietId$cliet-secret:$clietSecret$provider:okta:authorizatio-uri:https://$yourOktaDomai$/oauth2/v1/authorizetoke-uri:https://$yourOktaDomai$/oauth2/v1/tokeuser-ifo-uri:https://$yourOktaDomai$/oauth2/v1/userifojwk-set-uri:https://$yourOktaDomai$/oauth2/v1/keysokta-oauth2
okta.oauth2.issuer=https://$youtOktaDomai$/oauth2/defaultokta.oauth2.clietId=$clietId$cors-filter
@org.sprigframework.cotext.aotatio.Beapublicorg.sprigframework.boot.web.servlet.FilterRegistratioBeasimpleCorsFilter(){org.sprigframework.web.cors.UrlBasedCorsCofiguratioSourcesource=eworg.sprigframework.web.cors.UrlBasedCorsCofiguratioSource();org.sprigframework.web.cors.CorsCofiguratiocofig=eworg.sprigframework.web.cors.CorsCofiguratio();cofig.setAllowCredetials(true);cofig.setAllowedOrigis(java.util.Collectios.sigletoList("https://localhost:4200"));cofig.setAllowedMethods(java.util.Collectios.sigletoList("*"));cofig.setAllowedHeaders(java.util.Collectios.sigletoList("*"));source.registerCorsCofiguratio("/**",cofig);org.sprigframework.boot.web.servlet.FilterRegistratioBeabea=eworg.sprigframework.boot.web.servlet.FilterRegistratioBea(eworg.sprigframework.web.filter.CorsFilter(source));bea.setOrder(org.sprigframework.core.Ordered.HIGHEST_PRECEDENCE);returbea;}Agularg-giphy-service
import{Ijectable}from'@agular/core';import{HttpCliet}from'@agular/commo/http';import'rxjs/add/operator/map';@Ijectable()//https://tutorials.pluralsight.com/frot-ed-javascript/gettig-started-with-agular-2-by-buildig-a-giphy-search-applicatioexportclassGiphyService{//Publicbetakey:https://github.com/Giphy/GiphyAPI#public-beta-keygiphyApi='//api.giphy.com/v1/gifs/search?api_key=dc6zaTOxFJmzC&limit=1&q=';costructor(publichttp:HttpCliet){}get(searchTerm){costapiLik=this.giphyApi+searchTerm;returthis.http.get(apiLik).map((respose:ay)=>{if(respose.data.legth>0){returrespose.data[0].images.origial.url;}else{retur'https://media.giphy.com/media/YaOxRsmrv9IeA/giphy.gif';//dacigcatfor404}});}}g-giphy-foreach
for(cost$item$ofthis.$item$s){this.giphyService.get($item$.ame).subscribe(url=>$item$.giphyUrl=url);}g-okta-service
import{Ijectable}from'@agular/core';import*asOktaSigIfrom'@okta/okta-sigi-widget/dist/js/okta-sig-i.mi.js'import{ReplaySubject}from'rxjs/ReplaySubject';import{Observable}from'rxjs/Observable';@Ijectable()exportclassOktaAuthService{sigI=ewOktaSigI({baseUrl:'https://$yourOktaDomai$',clietId:'$clietId$',authParams:{issuer:'https://$yourOktaDomai$',resposeType:['id_toke','toke'],scopes:['opeid','email','profile']}});publicuser$:Observable<ay>;publicuserSource:ReplaySubject<ay>;costructor(){this.userSource=ewReplaySubject<ay>(1);this.user$=this.userSource.asObservable();}isAutheticated(){//ChecksifthereisacurretaccessTokeitheTokeMager.retur!!this.sigI.tokeMaager.get('accessToke');}logi(){//Lauchesthewidgetadstoresthetokes.this.sigI.rederEl({el:'#okta-sigi-cotaier'},respose=>{if(respose.status==='SUCCESS'){respose.forEach(toke=>{if(toke.idToke){this.sigI.tokeMaager.add('idToke',toke);}if(toke.accessToke){this.sigI.tokeMaager.add('accessToke',toke);}this.userSource.ext(this.idTokeAsUser);this.sigI.hide();});}else{cosole.error(respose);}});}getidTokeAsUser(){costtoke=this.sigI.tokeMaager.get('idToke');retur{ame:toke.claims.ame,email:toke.claims.email,userame:toke.claims.preferred_userame}}asyclogout(){//TermiatesthesessiowithOktaadremovescurrettokes.this.sigI.tokeMaager.clear();awaitthis.sigI.sigOut();this.sigI.remove();this.userSource.ext(udefied);}}g-okta-headers
costheaders:Headers=ewHeaders();if(this.oktaService.isAutheticated()){costaccessToke=this.oktaService.sigI.tokeMaager.get('accessToke');headers.apped('Authorizatio',accessToke.tokeType+''+accessToke.accessToke);}costoptios=ewRequestOptios({headers:headers});g-okta-oiit
user;costructor(publicoktaService:OktaAuthService,privatechageDetectorRef:ChageDetectorRef){}gOIit(){//1.foriitialloadadbrowserrefreshif(this.oktaService.isAutheticated()){this.user=this.oktaService.idTokeAsUser;}else{this.oktaService.logi();}//2.registeralisteerforautheticatioadlogoutthis.oktaService.user$.subscribe(user=>{this.user=user;if(!user){this.oktaService.logi();}//LetAgularkowthatmodelchaged.//Seehttps://github.com/okta/okta-sigi-widget/issues/268formoreifo.this.chageDetectorRef.detectChages();});}g-okta-logi
评论