小编the*_*150的帖子

Spring Boot:为RestControllers配置url前缀

我不是Spring的专家,而且它是黑盒子,即使使用Spring的文档,我也很难自己解决问题.有时,我只是不知道我在寻找什么才能开始我的搜索......

在我的Spring Boot应用程序中,我试图弄清楚如何为我的所有RestControllers配置一个唯一的url前缀.

我真正想要的就是从根上下文"/"中提供我的静态内容,但是可以从不同的上下文访问我的RestController端点,比如说"/ api/*".

我知道如何通过application.properties更改应用程序的默认上下文,但这不是我所追求的.当谈到servlet,映射等时,我在这里表现出我的无知,因为我说我正试图为两种不同类型的内容获得两种不同的上下文.

java spring servlets spring-mvc spring-boot

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

Spring Boot/HikariCP @Transactional 不会覆盖隔离级别

我的应用程序在我们的 SQL Server 数据库中的一个繁忙的表上遇到锁争用。我们的 DBA 团队建议我遵循其他团队的配置,这些团队的默认事务隔离级别设置为 READ_UNCOMMITTED。然后,据说他们将隔离级别设置回 READ_COMMITTED 以进行插入和更新。一段时间以来,我一直反对这样做,因为这感觉像是逃避,而且我已经看到到处都是反对使用 READ_UNCOMMITTED 的警告。然而,我的手现在被绑住了。

我正在使用 Spring Boot、HikariCP 并使用 Spring Data 存储库与我的 SQL Server 数据库进行交互。我允许 Spring 从我的 application.properties 自动配置我的数据源,并且几乎没有其他配置。

我设法在我的应用程序属性中设置了我的默认事务隔离级别,如下所示:

spring.datasource.hikari.transaction-isolation=TRANSACTION_READ_UNCOMMITTED
Run Code Online (Sandbox Code Playgroud)

我已经能够通过查询事务日志、从事务条目中获取 SPID 并运行以下查询来验证这是否有效,该查询现在返回“ReadUncommitted”:

SELECT CASE transaction_isolation_level 
WHEN 0 THEN 'Unspecified' 
WHEN 1 THEN 'ReadUncommitted' 
WHEN 2 THEN 'ReadCommitted' 
WHEN 3 THEN 'Repeatable' 
WHEN 4 THEN 'Serializable' 
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL 
FROM sys.dm_exec_sessions 
where session_id = @@SPID
Run Code Online (Sandbox Code Playgroud)

但是,在我的一项服务中,我试图将隔离级别覆盖回 READ_COMMITTED,但它没有生效。

鉴于以下情况:

来自 application.properties 的选择

spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.transaction-isolation=TRANSACTION_READ_UNCOMMITTED
Run Code Online (Sandbox Code Playgroud)

配置文件

@Configuration
@EnableJpaRepositories("my.project.repository")
@EntityScan(basePackages = …
Run Code Online (Sandbox Code Playgroud)

sql-server transactions spring-data spring-boot hikaricp

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

Elastic Beanstalk 部署缓慢

无论怎么想,我们小团队中的两个人都不是 AWS 专家。我们有几个 Spring Boot 应用程序通过 Bitbucket Pipelines 部署到 AWS EC2 实例。这些是单实例、自动扩展(最多 2 个实例)Elastic Beanstalk 应用程序。

太长了;博士

为什么我的单实例自动扩展(很少实际触发)Spring Boot 应用程序需要几秒钟才能启动,而每个环境通过 Bitbucket Pipelines 和 Elastic Beanstalk 进行部署需要花费 10 分钟以上?我们正在使用不可变的部署策略,看起来大部分时间都花在等待运行状况检查通过。如何减少部署时间?

--

以下是实例之一的“滚动更新和部署”配置:

Batch size: 100%
Batch size:
Command timeout: 600
Deployment policy: Immutable
Healthy threshold: Ok
Ignore health check: disabled
Minimum capacity:
Rolling update type: Immutable
Rolling updates: enabled
Run Code Online (Sandbox Code Playgroud)

我找不到任何真正的选项来配置自动缩放应用程序的运行状况检查。我找到了自动缩放组,并检查了它们的运行状况检查设置,但选项非常有限。目前,它们仅设置为 EC2 运行状况检查类型(不检查 ELB),宽限期为 0 秒。

阅读https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html后,我担心在某个地方,它设置了类似的默认值,30 秒的间隔,至少 10 次成功的运行状况检查为了使实例被宣布为健康。

在哪里可以查看或配置自动扩展、不可变部署、单实例应用程序所使用的运行状况检查的更详细设置?

deployment amazon-web-services autoscaling amazon-elastic-beanstalk bitbucket-pipelines

5
推荐指数
0
解决办法
694
查看次数