㈠ 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就可以实现,一些灵活的功能