
Ảnh 8: Đoạn mã được truyền thẳng vào hàm evaluateExpression()
POC:

Ảnh 9: PoC - Gọi được calculator
Debug CallStack:
bindableValueFor:389, ParameterBindingJsonReader (org.springframework.data.mongodb.util.json)
readBsonType:304, ParameterBindingJsonReader (org.springframework.data.mongodb.util.json)
decode:227, ParameterBindingDocumentCodec (org.springframework.data.mongodb.util.json)
decode:180, ParameterBindingDocumentCodec (org.springframework.data.mongodb.util.json)
createQuery:121, StringBasedMongoQuery (org.springframework.data.mongodb.repository.query)
doExecute:122, AbstractMongoQuery (org.springframework.data.mongodb.repository.query)
execute:107, AbstractMongoQuery (org.springframework.data.mongodb.repository.query)
invoke:-1, 1601756706 (org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryQueryMethodInvoker$$Lambda$580)
doInvoke:137, RepositoryMethodInvoker (org.springframework.data.repository.core.support)
invoke:121, RepositoryMethodInvoker (org.springframework.data.repository.core.support)
doInvoke:159, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
invoke:138, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
proceed:186, ReflectiveMethodInvocation (org.springframework.aop.framework)
invoke:80, DefaultMethodInvokingMethodInterceptor (org.springframework.data.projection)
proceed:186, ReflectiveMethodInvocation (org.springframework.aop.framework)
invoke:97, ExposeInvocationInterceptor (org.springframework.aop.interceptor)
proceed:186, ReflectiveMethodInvocation (org.springframework.aop.framework)
invoke:215, JdkDynamicAopProxy (org.springframework.aop.framework)
findByFirstName:-1, $Proxy44 (com.sun.proxy)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invokeJoinpointUsingReflection:344, AopUtils (org.springframework.aop.support)
invokeJoinpoint:198, ReflectiveMethodInvocation (org.springframework.aop.framework)
proceed:163, ReflectiveMethodInvocation (org.springframework.aop.framework)
invoke:137, PersistenceExceptionTranslationInterceptor (org.springframework.dao.support)
proceed:186, ReflectiveMethodInvocation (org.springframework.aop.framework)
invoke:215, JdkDynamicAopProxy (org.springframework.aop.framework)
findByFirstName:-1, $Proxy44 (com.sun.proxy)
run:65, AccessingDataMongodbApplication (com.logbasex.accessingdatamongodb)
callRunner:777, SpringApplication (org.springframework.boot)
callRunners:761, SpringApplication (org.springframework.boot)
run:310, SpringApplication (org.springframework.boot)
run:1312, SpringApplication (org.springframework.boot)
run:1301, SpringApplication (org.springframework.boot)
main:34, AccessingDataMongodbApplication (com.logbasex.accessingdatamongodb)
Những công cụ được sử dụng:
- IDE: IntelliJ Community Edition
- IDE: Visual Studio Code for testing SpEL Expression
- Spring Data MongoDB 3.3.4
- MongoDB version 4.2.21
- Brave
- Docker