小编mas*_*ter的帖子

使用java配置的现有请求映射的拦截器

我有一个配置类,它扩展了WebMvcConfigurationSupport,我添加了这样的拦截器:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(myInterceptor()).addPathPatterns("/api/**");
}
Run Code Online (Sandbox Code Playgroud)

在哪里myInterceptor():

@Bean
public MyInterceptor myInterceptor() {
    return new MyInterceptor();
}
Run Code Online (Sandbox Code Playgroud)

它适用于/api/**我已经实现的任何mapping()/api/sample- 来自MyInterceptor的preHandle被触发(我有一个带映射的Controller /api/sample).

当我调用不存在的资源时,例如/api/forward/sample从未调用MyInterceptor的preHandle.

请注意,当我在xml中使用配置时,它按预期工作,如:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/api/**" />
        <bean class="my.pack.MyInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>
Run Code Online (Sandbox Code Playgroud)

出于某些原因,对于Java配置,不会拦截对不存在的映射的请求.为什么配置不相同?我认为应该是.

编辑:

多一点调试信息.使用xml配置DispatcherServlet#handlerMappings包含5个处理程序:

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.socket.server.support.WebSocketHandlerMapping
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
org.springframework.security.oauth2.provider.endpoint.FrameworkEndpointHandlerMapping
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
Run Code Online (Sandbox Code Playgroud)

使用Java配置它包含7个处理程序:

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.socket.server.support.WebSocketHandlerMapping
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
org.springframework.security.oauth2.provider.endpoint.FrameworkEndpointHandlerMapping
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
Run Code Online (Sandbox Code Playgroud)

问题似乎是SimpleUrlHandlerMapping(至少它似乎用于我调用的资源 - api/forward/sampleapi/sample RequestMappingHandlerMapping在使用中)在基于Java的配置的情况下具有空的adopIterceptors.

编辑2:

示例应用程序的完整源代码(我试图尽量缩小以演示效果):https: //github.com/szprutamich/spring-demo

在类中ConfigurationBase- …

java spring-mvc spring-4

9
推荐指数
1
解决办法
1314
查看次数

如何获取 PaymentIntent next_action.type = redirect_to_url 而不是 use_stripe_sdk 进行订阅

我正在使用 Stripe 实现 Subscription*(已准备好 SCA)。我尝试处理https://stripe.com/docs/billing/subscriptions/payment#handling-action-required。在 Stripe 端创建订阅后,我得到了上面文档中的答案:

{
  "id": "sub_XXXXXXXXXXXXXXXXXXX",
  "object": "subscription",
  "status": "incomplete",
  ...
  "latest_invoice": {
    ...
    "payment_intent": {
      "status": "requires_action",
      ...
      "next_action": {
        "type": "use_stripe_sdk",
        ...
      },
      ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

根据文档https://stripe.com/docs/api/payment_intents/object#payment_intent_object-next_action-type next_action.type可以有两个值redirect_to_urluse_stripe_sdk

所以我的问题是如何获取next_action.type = redirect_to_url(而不是use_stripe_sdk)以及如何强制填充条纹next_action.redirect_to_url(因为我想在我的 UI 中自己处理它)?

* SO 上已经有一个类似的问题:https : //stackoverflow.com/questions/56490033/how-to-handle-use-stripe-sdk-through-php 但我的情况是创建我没有的订阅控制 PaymentIntent

stripe-payments

8
推荐指数
1
解决办法
3131
查看次数

Hibernate JPA CriteriaQuery ParameterExpression&lt;Collection&gt; 使用多次 - NoSuchElementException

迁移到 Hibernate 6 后,ParameterExpressionCollection类型一起使用会导致NoSuchElementException. 似乎Iterator每个参数都创建了一个,并且某些东西尝试多次遍历它。它可以在 Hibernate 的早期版本中运行。以一个非常虚拟的查询为例:

public List<Long> example(Long userId) {
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Long> query = builder.createQuery(Long.class);
    Root<User> user = query.from(User.class);
    query.select(user.get(User_.id));
    ParameterExpression<Collection<Long>> userIdParam = builder.parameter(generify(Collection.class));
    query.where(
            builder.or(
                    user.get(User_.id).in(userIdParam),
                    user.get(User_.id).in(userIdParam)
            )
    );
    query.distinct(true);
    TypedQuery<Long> typedQuery = entityManager.createQuery(query);
    typedQuery.setParameter(userIdParam, Collections.singletonList(userId));
    return typedQuery.getResultList();
}
Run Code Online (Sandbox Code Playgroud)

为每个条件创建 N 个相同的参数表达式有点麻烦。有什么建议吗?

堆栈跟踪:

java.util.NoSuchElementException: null
    at java.util.Collections$1.next(Collections.java:4817) ~[?:?]
    at org.hibernate.query.sqm.internal.SqmUtil.createJdbcParameterBindings(SqmUtil.java:267) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
    at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:358) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
    at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:268) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
    at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:244) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
    at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:518) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final]
    at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367) ~[hibernate-core-6.2.5.Final.jar:6.2.5.Final] …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

7
推荐指数
1
解决办法
261
查看次数

Android UIAutomator长按设备

我想用指定的时间长按指定的点.不幸的是,没有像在课堂上长按一样的方法:UiDevice 我可能会编写自己的方法,如下所示:

private void longClick(int x, int y, long time) {
    android.graphics.Point point = new android.graphics.Point(x, y);
    android.graphics.Point[] points = new android.graphics.Point[2];
    points[0] = point;
    points[1] = point;
    getUiDevice().swipe(points, time / 5); // according to documentation, each step lasts 5ms
}
Run Code Online (Sandbox Code Playgroud)

或使用反射并调用longTap:

private void longClick(int x, int y) {
    Field mUiAutomationBridgeField = getUiDevice().getClass().getDeclaredField("mUiAutomationBridge");
    mUiAutomationBridgeField.setAccessible(true);
    Object mUiAutomationBridge = mUiAutomationBridgeField.get(getUiDevice());
    Field mInteractionControllerField = mUiAutomationBridge.getClass().getDeclaredField("mInteractionController");
    mInteractionControllerField.setAccessible(true);
    Object mInteractionController = mInteractionControllerField.get(mUiAutomationBridge);
    Method longTap = mInteractionController.getClass().getDeclaredMethod("longTap", int.class, int.class);
    longTap.setAccessible(true);
    longTap.invoke(mInteractionController, x, y);
}
Run Code Online (Sandbox Code Playgroud)

然而,它不是满意的解决方案,任何想法如何做得更好的方式?他们为什么错过这种方法?

java testing android android-uiautomator

5
推荐指数
2
解决办法
4443
查看次数

如果应该应用jx step helm,则创建/生成helm版本

我在和jx,kubernetes和helm斗争。我在执行env目录中的命令的jx上运行Jenkinsfile:

sh 'jx step helm build'
sh 'jx step helm apply'
Run Code Online (Sandbox Code Playgroud)

它成功完成并部署了pods /创建了部署等。但是,头盔列表为空。

当我执行类似helm install ...或的操作时,helm upgrade --install ...它会创建一个发布,并且头盔列表显示了这一点。

这是正确的行为吗?

更多细节:

安装了以下软件的EKS:

eksctl create cluster --region eu-west-2 --name integration --version 1.12 \
--nodegroup-name integration-nodes \
--node-type t3.large \
--nodes 3 \
--nodes-min 1 \
--nodes-max 10 \
--node-ami auto \
--full-ecr-access \
--vpc-cidr "172.20.0.0/16"
Run Code Online (Sandbox Code Playgroud)

然后我用一些kubectly apply命令(不共享文件)设置入口(外部和内部)。然后设置路由和与vpc相关的内容。

JX安装了:

jx install --provider=eks --ingress-namespace='internal-ingress-nginx' \
--ingress-class='internal-nginx' \
--ingress-deployment='nginx-internal-ingress-controller' \
--ingress-service='internal-ingress-nginx' --on-premise \
--external-ip='#########' \
--git-api-token=######### \
--git-username=######### …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm jenkins-x aws-eks

4
推荐指数
1
解决办法
224
查看次数

Intellij为运行配置设置运行时变量

我有maven运行配置,我打电话给:

liquibase:rollback -Dliquibase.rollbackCount=1 -Dliquibase.clearCheckSums=true
Run Code Online (Sandbox Code Playgroud)

在运行配置本身而不是编辑配置之前,有没有办法显示一些弹出窗口来提供rollbackCount?

intellij-idea

3
推荐指数
2
解决办法
646
查看次数

意外的空查询结果

好的,这是一个愚蠢的....

Select * from <table> where <col1> is null and <col2> = 1;
Run Code Online (Sandbox Code Playgroud)

<col1>是varchar2(5byte)没有defalut值 <col2>是默认值-1

为什么我的上述查询不会返回任何记录?我知道查询应该返回一个结果集,但我什么都没得到.

如果我做:

Select * from <table> where <col1> is null; 
Run Code Online (Sandbox Code Playgroud)

我收到了127531条记录

如果我做:

Select * from <table> where <col2> = 1; 
Run Code Online (Sandbox Code Playgroud)

我收到了86342条记录

Oracle是否以奇怪的方式处理空值?我是MSSQL有点人.

sql oracle

1
推荐指数
1
解决办法
531
查看次数