㈠ spring 中的@cacheable的key是怎麼配置的
value:緩存的名稱,在 spring 配置文件中定義,必須指定至少一個
例如:
@Cacheable(value=」mycache」) 或者
@Cacheable(value={」cache1」,」cache2」}
key :
緩存的 key,可以為空,如果指定要按照 SpEL 表達式編寫,如果不指定,則預設按照方法的所有參數進行組合
例如:@Cacheable(value=」testcache」,key=」#userName」)
condition :
緩存的條件,可以為空,使用 SpEL 編寫,返回 true 或者 false,只有為 true 才進行緩存
例如:@Cacheable(value=」testcache」,condition=」#userName.
㈡ spring spel 表達式怎麼使用
Spring的IOC本質就一個容器,也就是一個對象的工廠,我們通過配置文件注冊我們的Bean對象,通過他進行對象的組裝與床架。
SpEL表達式就是一種字元串編程,類似於JS裡面的EVAL的作用, 通過它可以運行字元串內容
特點:算是一種動態的編程在配置文件(xml配置文件或者註解表達式)--------------------------主流的編程都是基於GUI的開發模式(XML開發模式)裡面的動態編程
重點:要是通過拼接字元串作為代碼運行,SpEL就可以實現,一些靈活的功能
<bean id="numberGuess" class="org.spring.samples.NumberGuess">
<property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>
<!-- other properties -->
</bean>
<bean id="taxCalculator" class="org.spring.samples.TaxCalculator">
<property name="defaultLocale" value="#{ systemProperties['user.region'] }"/>
<!-- other properties -->
</bean>
<bean id="numberGuess" class="org.spring.samples.NumberGuess">
<property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>
<!-- other properties -->
</bean>
<bean id="shapeGuess" class="org.spring.samples.ShapeGuess">
<property name="initialShapeSeed" value="#{numberGuess.randomNumber }"/>
<!-- other properties -->
</bean>
ExpressionParser parser = new SpelExpressionParser();
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
tesla.setPlaceOfBirth(new PlaceOfBirth("Smiljan"));
StandardEvaluationContext context = new StandardEvaluationContext(tesla);
String city = parser.parseExpression("PlaceOfBirth?.City").getValue(context, String.class);
System.out.println(city); // Smiljan
tesla.setPlaceOfBirth(null);
city = parser.parseExpression("PlaceOfBirth?.City").getValue(context, String.class);
System.out.println(city); // null - does not throw NullPointerException!!!
否則:我們就只能通過JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 來編譯字元串生成類
㈢ java中能使用ognl表達式嗎
Java中本身沒有OGNL表達式,OGNL表達式,是需要自己實現的,比如Struts2自己的OGNL表達式,或是Spring的SPEL表達式,他們都是通過Java代碼實現的java中能使用ognl表達式嗎
㈣ Spring中需要什麼配置才能使用SpEL表達式
Spring的IOC本質就一個容器,也就是一個對象的工廠,我們通過配置文件注冊我們的Bean對象,通過他進行對象的組裝與床架。
SpEL表達式就是一種字元串編程,類似於JS裡面的EVAL的作用, 通過它可以運行字元串內容
特點:算是一種動態的編程在配置文件(xml配置文件或者註解表達式)--------------------------主流的編程都是基於GUI的開發模式(XML開發模式)裡面的動態編程
重點:要是通過拼接字元串作為代碼運行,SpEL就可以實現,一些靈活的功能
<bean id="numberGuess" class="org.spring.samples.NumberGuess">
<property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>
<!-- other properties -->
</bean>
<bean id="taxCalculator" class="org.spring.samples.TaxCalculator">
<property name="defaultLocale" value="#{ systemProperties['user.region'] }"/>
<!-- other properties -->
</bean>
<bean id="numberGuess" class="org.spring.samples.NumberGuess">
<property name="randomNumber" value="#{ T(java.lang.Math).random() * 100.0 }"/>
<!-- other properties -->
</bean>
<bean id="shapeGuess" class="org.spring.samples.ShapeGuess">
<property name="initialShapeSeed" value="#{numberGuess.randomNumber }"/>
<!-- other properties -->
</bean>
ExpressionParser parser = new SpelExpressionParser();
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
tesla.setPlaceOfBirth(new PlaceOfBirth("Smiljan"));
StandardEvaluationContext context = new StandardEvaluationContext(tesla);
String city = parser.parseExpression("PlaceOfBirth?.City").getValue(context, String.class);
System.out.println(city); // Smiljan
tesla.setPlaceOfBirth(null);
city = parser.parseExpression("PlaceOfBirth?.City").getValue(context, String.class);
System.out.println(city); // null - does not throw NullPointerException!!!
否則:我們就只能通過JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 來編譯字元串生成類
㈤ spring spel 有什麼作用
SpringIOC本質容器象工廠我通配置文件注冊我Bean象通進行象組裝與床架 SpEL表達式種字元串編程,類似於JS面EVAL作用 通運行字元串內容 特點:算種態編程配置文件(xml配置文件或者註解表達式)--------------------------主流編程都基於GUI發模式(XML發模式)面態編程 重點:要通拼接字元串作代碼運行SpEL實現些靈功能 ExpressionParser parser = new SpelExpressionParser(); Inventor tesla = new Inventor("Nikola Tesla", "Serbian"); tesla.setPlaceOfBirth(new PlaceOfBirth("Smiljan")); StandardEvaluationContext context = new StandardEvaluationContext(tesla); String city = parser.parseExpression("PlaceOfBirth?.City").getValue(context, String.class); System.out.println(city); // Smiljan tesla.setPlaceOfBirth(null); city = parser.parseExpression("PlaceOfBirth?.City").getValue(context, String.class); System.out.println(city); // null - does not throw NullPointerException!!! 否則:我能通JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 編譯字元串
㈥ Java EE的基本學習路線是什麼
可從事崗位:初級JAVA軟體工程師
Java核心編程(15天) JavaSE編程基礎 介紹JavaEE的應用領域及整體技術體系,生態圈,以及當前就業環境。強調學習紀律及相關約定,講師的個人介紹;DOS常用命令;安裝JDK、設置環境變數;DOS系統編譯、執行Java程序;Java的注釋;標識符、標識符的命名規范;Java 關鍵字;Java的數據類型;變數的定義及初始化;Java的運算符;表達式;轉義字元;運算符的優先順序;類型轉換;Java分支if...else;多重if、嵌套if;Java switch;switch vs if;Java循環 for、while 、do-while;循環的嵌套;break、continue、return;方法的定義;方法的形參和實參;無返回值的方法;有返回值的方法;方法的重載
Java數組 Java 數組的定義;數組的靜態賦值;數組的動態賦值;數組單個元素的訪問;數組的遍歷訪問;數組的增強for循環;數組的排序;數組的順序查找;數組的二分法查找;命令行參數args的使用;可變參數的應用;Arrays工具類的使用;二維數組的使用
Java面向對象 面向對象的分析與設計;面向對象與面向過程的區別;Java與面向對象;類的定義;對象的定義;類中成員變數及方法的定義;構造方法的定義和調用;構造方法的重載;面向對象的封裝特性;this調用屬性、方法、構造方法;局部變數和成員變數的作用域問題;static靜態屬性、方法、代碼塊;工具類的概念及工具類的製作;super關鍵字的使用及理解;Java中訪問許可權控制機制;繼承中構造方法的細節;方法的重寫;equals及toString方法的正確理解;Java中的包機制;抽象類,介面,多態;對象的轉型;final修飾類、屬性、方法;抽象類,介面;多態機制;內部類;通過內部類製作性能檢測工具;Java的內存分析
常用基礎類 常用數據類型的包裝類;String、StringBuffer、StringBuilder;Date的使用;SimpleDataFormate對日期和字元串之間的轉換處理;Calendar日歷類的使用;Math常用方法;Random類;Runtime類;System 類;Java8特性
集合 集合框架體系介紹;集合框架與數組的對比;集合框架之Collection介面;集合框架之List介面;ArrayList和LinkedList的使用;深入源碼探究ArrayList和LinkedList的工作原理;迭代器的工作原理;迭代器的使用;集合框架之Set;HashSet和TreeSet的使用;深入源碼探究HashSet和TreeSet的工作原理;HashMap和TreeMap的使用;分析Map和Set的之間的關系;Collections工具類
異常處理 Java的異常體系;異常的概念及分類;異常的處理方式;異常設計原則;自定義異常
線程和I/O I/O;NIO;文件操作;多線程;線程池;同步;線程調度;多線程下載;網路http、socket;基於HTTP協議訪問網路資源、XML解析;文件的下載;ThreadLocal
項目 FTP伺服器、多人聊天伺服器
第二階段:JavaWeb實戰(25天)
可從事崗位:WEB初級前端開發工程師,初級BI工程師
JavaWeb實戰(25天) HTML5 HTML的作用;全局標簽;絕對路徑與相對路徑;常見標簽;字元集;表單標簽;布局指定的網頁
CSS3 CSS聲明類型;常見的各種屬性;圓角屬性:border-radius的使用;陰影屬性:box-shadow的用法;背景屬性擴展:多背景應用;新的顏色表示方式:HSLA色輪模式;浮動;完成自己的初級課頁面實戰
Javascript JavaScript基本語法;JavaScript數據類型;JavaScript對象和常用對象;history對象;location對象;bom對象;表單對象;DOM對象;window對象;常用事件;選項卡、幻燈片、貪吃蛇、瀑布流各種特效
MySQL使用 Mysql資料庫;MySql命令行客戶端的使用;MySql圖形化客戶端的使用;SQL語句介紹;DDL;DML;DQL;多表的聯合查詢;子查詢;排序、聚合、分組
JDBC連接池 JDBC的介紹;採用JDBC實現CRUD;採用PrepareStatement防止SQL注入,提高安全性
Servlet Tomcat與idea的集成開發;什麼是Servlet;Servlet接收客戶端請求信息;Servlet響應客戶端信息;Servlet的生命周期;什麼是JSP;JSP的內置對象;透析JSP的本質;JSTL+EL;MVC介紹;分層的重要性;MySql的事務特性;MySql的事務實現;Session的使用;Cookie的使用;實現系統的安全控制;DBCP連接池的使用;C3P0連接池的使用;DBUils;實現用戶的自動登錄;文件的上傳;文件的下載;過濾器解決編碼問題;過濾器解決安全驗證問題;監聽器;反射、註解、泛型
MVC 設計模式;ORM原理;自定義框架
ajax Ajax的工作原理;JSON解析;Ajax 數據格式(XML格式、HTML格式、JSON格式、各種格式對比);使用 jQuery 實現 Ajax(load()方法、$.get()方法、$.post()方法、序列化、Ajax應用);聊天室小實例
jQuery jQuery選擇器;jQuery的常用事件;事件冒泡;事件委派;jQuery中的動化;模擬操作;jQuery綜合實例
Bootstrap 響應式設計;Bootstrap安裝;Bootstrap 組件;進度條和列表組件;Bootstrap綜合實例
項目 講解項目開發流程;項目簡介;項目功能演示;項目功能實現分析;資料庫設計分析;項目架構設計分析;實現網站首頁的商品展示;實現商品詳情頁面;實現購物車功能;實現我的訂單管理;項目驗收
第三階段:企業核心框架(30天)
可從事崗位:中級BI工程師,JAVA微服務研發工程師
企業核心框架(30天) Linux基礎 Linux系統-基礎;Linux網路基礎;VMWare下安裝Linux;Linux命令;Linux下Java環境的搭建;Linux下Tomcat安裝和配置
maven Maven簡介和環境搭建;Maven構建和自動化構建;pom.xml詳細說明、依賴管理;Maven坐標、依賴、生命周期等;IDEA下的Maven使用
Git Git概述、Git與SVN對比;Git常用命令;Git分支以及代碼沖突的解決;客戶端TortoiseGit使用;IDEA中Git集成使用
Spring5 框架原理介紹;框架環境搭建;快速入門;創建Bean的方式及實現原理;Bean種類;Bean生命周期;Bean的作用域;Bean的注值方式;SpEL;整合Junit測試;Web項目集成Spring;註解裝配Bean;AOP思想;AOP原理解剖;傳統方式實現AOP開發;AspectJ介紹及實現AOP開發
SpringMVC Spring MVC 概述;使用 @RequestMapping映射請求;請求處理方法簽名概述;處理方法簽名詳細說明;使用 HttpMessageConverter;處理模型數據;數據綁定流程剖析;數據轉換;數據格式化;數據校驗;視圖和視圖解析器;處理方法的數據綁定
MyBatis 安裝和配置MyBatis;使用映射語句;執行非查詢語句;使用高級查詢技術;事務;使用動態SQL;使用高速緩存提高性能;MyBatis數據訪問對象;DAO使用進階
項目整合 使用SSM開發實際項目;通過項目理解框架
SpringData Spring Data 概述;Repository;CrudRepository;PagingAndSortingRepository;JpaRepository;條件查詢;使用@Query自定義查詢;@Query 與 @Modifying 執行更新操作;索引參數與命名參數;用@Query來指定本地查詢;為某一個 Repository 上添加自定義方法;所有的 Repository 都添加自定義的方法
Maven高級 pom文件依賴傳遞介紹;Maven繼承與聚合項目;私服倉庫介紹和搭建;公共模塊上傳到私服、引用私服jar包;Maven常用插件使用;使用Maven的profile實現多環境配置
Gitlab/Jenkins Gitlab使用;持續集成工具Jenkins使用;Jenkins+Gitlab+maven+tomcat實現自動集成、打包、部署
WebSocket WebSocket原理介紹;WebSocket的使用
RESTful http協議;RESTful規范;postman使用;spring 實現 RESTful
ECharts圖表插件 圖表介紹和選擇什麼樣的圖表;5分鍾快速上手;常用API和模塊;移動端自適應
項目一 10個大型項目選擇;各種項目特點分析;項目設計;項目分組;選擇框架;後台搭建;使用Maven構建項目;項目開發;壓力測試;webhooks項目自動部署;面試中常問到的項目問題;項目bug收集和解決;項目驗收;項目答辯
第四階段:高並發和分布式應用(40天)
可從事崗位:服務端架構師, 平台架構師
高並發和分布式應用(40天) Nginx反向代理和負載均衡 Nginx伺服器的優勢;Nginx伺服器配置;什麼是反向代理;什麼是負載均衡;負載均衡演算法;構建數十台伺服器的負載均衡環境
Docker Docker介紹;Docker安裝;Docker 常見操作;Docker 自定義鏡像;Docker Compose服務編排;Docker Compose 安裝Nexus;Docker Compose 安裝 Gitlab;Docker Compose 安裝 Docker Registry;基於Gitlab實現CI
UML和常用工具的使用 UML介紹以及在軟體開發中的應用;UML常用圖的繪制以及使用;Enterprise Architect的使用;結合UML知識對項目做需求分析;結合UML知識對項目做架構設計以及技術選型
億級並發架構演進 架構演進特點;大並發架構;微服務
MySQL高級 ACID和MySQL的實現原理;SQL優化技巧;MySQL分區;分庫分表技巧;Explain分析
MyCat分庫分表技術 MyCat介紹;分庫分開技術講解;其他的資料庫中間件;配置與自動分表
Vue Vue 入門;Vue 語法;Vue 事件;Axios 網路通信;Vue表單輸入;Vue 計算屬性;Vue內容分發與自定義事件;Vue-cli腳手架;Vue-Router 路由;Vuex 狀態管理
SpringBoot SpringBoot基本介紹和使用;SpringBoot的核心功能;SpringBoot開發web項目;SpringBoot整合Junit以及MockMvc的使用;SpringBoot集成Swagger;Spring Data JPA 的使用;SpringBoot整合MyBatis
Shiro Authentication;Authorization;Role;編程授權;Realm;Realms的認證實現;Realms的授權實現;Spring 集成 Shiro;基於註解的授權
CAS 單點登錄介紹;CAS單點登錄配置;CAS MD5配置;CAS 鹽值MD5;CAS整合Shiro
Zookeeper/Consul Zookeeper 簡介;Zookeeper安裝;Zookeeper高可用集群;Curator-API;Zookeeper分布式鎖;統一配置管理;Consul使用
Dubbo Dubbo簡介;Spring整合Dubbo2.6x使用;Dubbo管控台;Springboot 2.x整合bbo 2.6x;Dubbo負載均衡;Dubbo集群容錯
Spring Cloud SpringCloud之 微服務簡介;SpringCloud之 Eureka;SpringCloud之 Ribbon;SpringCloud之 Feign;SpringCloud之 HyStrix;SpringCloud之 Zuul;SpringCloud之Stream;SpringCloud之Sleuth;SpringCloud之 ConfigServer;微服務安全解決方案:Oauth2/JWT
Redis NoSQL&Redis;Redis特點與優勢以及使用場景;Redis主從、哨兵、集群模式安裝配置;Redis持久化策略、淘汰策略;Redis五大數據類型和基本操作命令;SpringBoot集成Lettuce API;SpringBoot集成Redisson API分布式場景應用
Elasticsearch ElasticSearch簡介;ElasticSearch基礎入門;ElasticSearch集群以及Kibana和分詞插件的安裝;ElasticSearch索引、分片創建與管理;ElasticSearch基本搜索;ElasticSearch組合搜索;Elasticsearch全文檢索,高亮顯示;Elasticsearch Java High Level REST Client使用
RabbitMQ 隊列 RabbitMQ 簡介;RabbitMQ 安裝;RabbitMQ賬戶;RabbitMQ消息模式;Spring整合RabbitMQ;SpringBoot整合RabbitMQ;消息確認機制;消息延遲隊列;RabbitMQ高可用集群
分布式事務 分布式事務場景;分布式事務解決方案;CAP理論;兩段提交協議;三段提交協議;MQ事務消息;TX-LCN/TCC-Transaction
分布式任務(Quartz/Elastic-Job) Quartz基本使用;Quartz不同觸發器;Quartz自動化任務;Spring定時任務;Spring整合Quartz;Elastic-Job分布式任務
微信開發 微信公眾號;微信支付;微信小程序
綜合項目實戰 15個大型項目選擇;各種項目特點分析;項目設計;項目分組;選擇框架;後台搭建;使用Maven構建項目;項目開發;壓力測試;項目自動部署;面試中常問到的項目問題;項目bug收集和解決;項目上線;項目驗收;項目答辯
㈦ spring spel表達式不管用,需要配置什麼嗎
xm命名空間中加入這些東西:
xmlns:util="http://www.springframework.org/schema/util"
http://www.springframework.org/schema/util
然後根據你的配置文件配置
<util:properties id="settings" location="classpath:configuration.properties" />
然後使用
@Value("#{settings['xx.xxx']}")
private String xx;
㈧ spel中使用運算符結果為什麼不能是中文
請在使用運算符時候注意,運算符左右對稱, 如過左側有空格,右側就寫空格,左側沒有,右側也不要有 否則運算符會被判斷為閉包表達式
㈨ 愛普生的spel+跟spring有關系嗎
SpEL -- Spring Expression Language. Spring的表達式語言。舉個最簡單的例子:
ExpressionParserparser=newSpelExpressionParser();
Expressionexp=parser.parseExpression("'HelloWorld'");
Stringmessage=(String)exp.getValue();
最後 message的值就是 Hello World, 表達式中的單引號''就是表達String類型的一種格式。另外值得注意的一點時,當表達式不符合規范時, parser.parseExpression語句會拋出ParseException;而exp.getValue會拋出EvaluationException
而為了避免最後的類型轉換,我們還可以這樣寫:
Stringmessage=exp.getValue(String.class);
㈩ 如何重現spring boot框架spel表達式注入漏洞
Spring的IOC本質就一個容器,也就是一個對象的工廠,我們通過配置文件注冊我們的Bean對象,通過他進行對象的組裝與床架。SpEL表達式就是一種字元串編程,類似於JS裡面的EVAL的作用, 通過它可以運行字元串內容
特點:算是一種動態的編程在配置文件(xml配置文件或者註解表達式)--------------------------主流的編程都是基於GUI的開發模式(XML開發模式)裡面的動態編程
重點:要是通過拼接字元串作為代碼運行,SpEL就可以實現,一些靈活的功能