在传统的Spring MVC中,我可以扩展WebMvcConfigurationSupport并执行以下操作:
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false).
favorParameter(true).
defaultContentType(MediaType.APPLICATION_JSON).
mediaType("xml", MediaType.APPLICATION_XML);
}
Run Code Online (Sandbox Code Playgroud)
我如何在Spring Boot应用程序中执行此操作?我的理解是,增加了WebMvcConfigurationSupport与@EnableWebMvc将禁用春季启动WebMvc自动配置,这是我不想要的.
我们正在使用Spring Cloud框架开发一套微服务,我们需要做的一件事就是设置请求头.我知道我可以将参数@RequestHeader传递给Feign方法,但该值需要来自另一个bean.我不知道SPEL是否可用于Feign参数值.我认为这对于大多数客户来说是一个很常见的用例,所以会有一些例子,但到目前为止我还没有找到任何例子.当然,我可以深入了解Spring课程代码并尝试覆盖默认的Feign配置,但如果我要编写大量代码来实现这一点,它有点会破坏声明性客户端的目的.有什么想法吗?
spring-mvc microservices spring-cloud netflix-feign spring-cloud-netflix
Spring Cloud 文档说:
如果Hystrix在类路径上,默认情况下,Feign将使用断路器包装所有方法.
ErrorDecoder将HTTP状态代码映射到异常的实现.如果我戴上@HystrixCommand这个方法,Feign会尊重吗?RestTemplate,这样做.从我在代码中看到的并基于Dave Syer 在这里的答案,Feign没有使用RestTemplate.那么我该如何满足日志记录要求呢?界面feign.Client看起来很有希望,虽然我不完全确定是否使用它.spring-cloud netflix-feign spring-cloud-feign feign spring-cloud-netflix
让我们从Javadocs开始:
表示在非法或不适当的时间调用了方法.换句话说,Java环境或Java应用程序未处于所请求操作的适当状态.
抛出以指示方法已被传递非法或不适当的参数.
上述问题是它们非常黑白.考虑一种方法,其中方法正在解析调用者提供的文件.该文件存在,可读,格式正确.但是,文件中的某些内容不符合业务规则.在这种情况下抛出什么是适当的例外 - IllegalStateException或者IllegalArgumentException?
查看提供断言的各种库,例如Guava Preconditions或Spring Assert,似乎没有达成共识.这里和这里有一些很好的讨论,但没有一个能为我上面提到的常见用例提供确凿的答案.
免责声明:据我所知,我没有展示一些代码,但我认为这是一个特殊而实用的问题,需要考虑进行良好的API设计.让我们假装我们回到了堆栈溢出的好日子,当时人们乐于讨论实用问题,而不是贬低任何看起来不像家庭作业的东西.
java exception illegalargumentexception illegalstateexception
PEP 622引入了match声明作为if-elif-else. 然而,我在提案或任何在线材料中找不到的一件事是该match声明是否可以用作表达式而不仅仅是作为声明。
举几个例子可以清楚地说明这一点:
示例1:
def make_point_2d(pt):
match pt:
case (x, y):
return Point2d(x, y)
case _:
raise TypeError("not a point we support")
Run Code Online (Sandbox Code Playgroud)
示例2:
match response.status:
case 200:
do_something(response.data)
case 301 | 302:
retry(response.location)
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,函数从子句内部返回case,而在第二个示例中,不返回任何内容。但我希望能够做类似以下假设示例的事情:
spouse = match name:
case "John":
"Jane"
case "David":
"Alice"
print(spouse)
Run Code Online (Sandbox Code Playgroud)
但它无法编译。
我正在通过"Scala for the Impatient"一书中的练习来学习Scala.一个问题是:
结果
"abc".map(_.toUpper)是aString,但结果"abc".map(_.toInt)是aVector.找出为什么.
在阅读" Scala集合的架构 "之后,我认为这是因为CanBuildFrom选择了不同的隐式实现.如何找出为上述表达式选择的?
我一直在玩一个Spring Cloud应用程序,它包含一个配置服务器,一个发现服务器(Eureka)和一个带有Ribbon的Feign客户端(由Feign内部使用).我有2个服务,a movie-service和a daily-update-service.目的是在一个地方提供热门电影,新闻和天气的每日更新.我遇到的问题是movie-serviceFeign客户端无法找到它daily-update-service.它出错了以下内容:
Caused by: java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: movie-service
daily_update_service_1 | at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:59) ~[spring-cloud-netflix-core-1.1.0.M4.jar:1.1.0.M4]
daily_update_service_1 | at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:95) ~[feign-core-8.12.1.jar:8.12.1]
daily_update_service_1 | at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:74) ~[feign-core-8.12.1.jar:8.12.1]
daily_update_service_1 | at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:54) ~[feign-hystrix-8.12.1.jar:8.12.1]
daily_update_service_1 | at com.netflix.hystrix.HystrixCommand$1.call(HystrixCommand.java:294) ~[hystrix-core-1.4.21.jar:1.4.21]
daily_update_service_1 | ... 21 common frames omitted
daily_update_service_1 | Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: movie-service
daily_update_service_1 | at com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:468) ~[ribbon-loadbalancer-2.1.0.jar:2.1.0]
daily_update_service_1 | at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) …Run Code Online (Sandbox Code Playgroud) 我正在用一个胖罐子构建一个 Docker 镜像。我使用sbt-assembly插件来构建 jar,并使用sbt-native-packager来构建 Docker 映像。我对 SBT 不是很熟悉,并且遇到了以下问题。
我想assembly从docker:publish任务中声明对任务的依赖,以便在将胖罐添加到图像之前创建它。我按照文档中的说明做了,但它不起作用。assembly在我调用它之前不会运行。
publish := (publish dependsOn assembly).value
构建映像的步骤之一是复制胖罐。由于程序集插件在 中创建 jar target/scala_whatever/projectname-assembly-X.X.X.jar,我需要知道确切scala_whatever的 jar 名称。程序集似乎有一个密钥,assemblyJarName但我不知道如何访问它。我尝试了以下失败的方法。
Cmd("COPY", "target/scala*/*.jar /app.jar")
帮助!
我正在 Java Spring 中开发一个 Web 应用程序,我希望用户能够从前端上传 CSV 文件,然后查看导入过程的实时进度,导入后他应该能够搜索单个条目从导入的数据。
导入过程包括实际上传文件(通过 REST API POST 请求发送),然后读取文件并将其内容保存到数据库中,以便用户能够从此数据中进行搜索。
将数据保存到数据库的最快方法是什么?仅循环遍历各行并创建一个新的类对象并通过 JPARepository 为每行保存它会花费太多时间。10000 行大约需要 90 秒。我需要让它变得更快。我需要在合理的时间内添加 200k 行。
附注:
我看到了使用 Reactor 的异步方法。这应该会更快,因为它使用多个线程,并且保存行的顺序基本上并不重要(尽管数据在 CSV 中具有 ID)。
然后我还看到了 Spring Batch 作业,但所有示例都使用 SQL。我正在使用存储库,所以我不确定是否可以使用它或者它是否是最好的方法。
给定一个原型文件:
\nsyntax = "proto3";\npackage hello;\n\nmessage TopGreeting {\n NestedGreeting greeting = 1;\n}\n\nmessage NestedGreeting {\n Greeting greeting = 1;\n}\n\nmessage Greeting {\n string message = 1;\n}\nRun Code Online (Sandbox Code Playgroud)\n和代码:
\npublic class Main {\n public static void main(String[] args) {\n System.out.printf("From top: %s%n", newGreeting("\xec\x98\xa4\xeb\x8a\x98\xec\x9d\x80 \xeb\xac\xb4\xec\x8a\xa8 \xec\x9a\x94\xec\x9d\xbc\xec\x9e\x85\xeb\x8b\x88\xea\xb9\x8c?"));\n System.out.printf("Directly: %s%n", "\xec\x98\xa4\xeb\x8a\x98\xec\x9d\x80 \xeb\xac\xb4\xec\x8a\xa8 \xec\x9a\x94\xec\x9d\xbc\xec\x9e\x85\xeb\x8b\x88\xea\xb9\x8c?");\n System.out.printf("ByteString: %s", newGreeting("\xec\x98\xa4\xeb\x8a\x98\xec\x9d\x80 \xeb\xac\xb4\xec\x8a\xa8 \xec\x9a\x94\xec\x9d\xbc\xec\x9e\x85\xeb\x8b\x88\xea\xb9\x8c?").toByteString().toStringUtf8());\n }\n\n private static Hello.TopGreeting newGreeting(String message) {\n Hello.Greeting greeting = Hello.Greeting.newBuilder()\n .setMessage(message)\n .build();\n Hello.NestedGreeting nestedGreeting = Hello.NestedGreeting.newBuilder()\n .setGreeting(greeting)\n .build();\n return Hello.TopGreeting.newBuilder()\n .setGreeting(nestedGreeting)\n .build();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n输出
\n …spring-boot ×3
spring-cloud ×3
spring-mvc ×3
java ×2
builder ×1
docker ×1
exception ×1
feign ×1
isinstance ×1
mapreduce ×1
python ×1
python-3.10 ×1
sbt ×1
sbt-assembly ×1
scala ×1
spring ×1
string ×1