小编Dea*_*ool的帖子

Spring @EnableRetry抛出InternalAutoProxyCreator

我创建了示例Spring-boot应用程序,它运行正常,没有任何错误,

现在我想练习spring-retry重试一些方法。如果我不使用,@EnableRetry我的应用程序启动时将没有任何错误,但重试无法正常进行。

如果我@EnableRetry在配置类上使用,我的应用程序无法启动

build.gradle

apply plugin: 'java-library'

repositories {
  jcenter()
  }

 dependencies {

        // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
         compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.1.0.RELEASE'
        // https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka
         compile group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.2.0.RELEASE'
        // https://mvnrepository.com/artifact/commons-logging/commons-logging
         compile group: 'commons-logging', name: 'commons-logging', version: '1.2'
         // https://mvnrepository.com/artifact/org.springframework.retry/spring-retry
         compile group: 'org.springframework.retry', name: 'spring-retry', version: '1.2.0.RELEASE'

}
Run Code Online (Sandbox Code Playgroud)

设定档

import org.springframework.context.annotation.Configuration;
import org.springframework.retry.annotation.EnableRetry;

@Configuration
@EnableRetry
public class RetryConfig {

 }
Run Code Online (Sandbox Code Playgroud)

重试服务

@Service
public class RetryService {

 @Retryable(value = { CustomException.class …
Run Code Online (Sandbox Code Playgroud)

java spring aspectj spring-retry spring-boot

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

如果 schema 不存在,则使用 spring Jpa 和 hibernate 来创建 schema

我正在开发 spring boot 2 应用程序,并尝试通过配置 hikari 数据源和 spring Jpa 与 postgresql 数据库建立连接。

我在这方面取得了成功,并且我正在使用hibernate.hbm2ddl.autoas update,因此它会在不存在的情况下创建表,但唯一的问题是当架构不存在时它会引发异常

错误

GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
Caused by: org.postgresql.util.PSQLException: ERROR: schema "test_schema" does not exist
Run Code Online (Sandbox Code Playgroud)

我通过配置类手动配置了一切

配置类

@Bean
@Primary
public HikariDataSource dataSource() {

    HikariConfig config = new HikariConfig();

    config.setJdbcUrl(databaseUrl);
    config.setUsername(username);
    config.setPassword(password);
    config.setDriverClassName(driverClassName);
    config.setConnectionTimeout(connectionTimeout);
    config.setIdleTimeout(idleTimeout);
    config.setMaximumPoolSize(maxpoolSize);
    config.setMaxLifetime(maxLifeTime);
    config.setMinimumIdle(minIdleConnections);
    //config.setPoolName(poolName);

    return new HikariDataSource(config);
}

@Bean
public Properties additionalProps() {
    Properties jpaProps = new Properties();

    jpaProps.put(hbDialect, "org.hibernate.dialect.PostgreSQLDialect");
    jpaProps.put(autoDDL, "update"); …
Run Code Online (Sandbox Code Playgroud)

java postgresql hibernate spring-data-jpa spring-boot

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

如何在函数中返回可选参数

我希望有一个函数返回我给它的参数的多个结果函数。

我已经尝试过谷歌搜索等,但没有任何运气

例如:

def function(x, i_add = False):
    if i_add == True:
        y = x+1

    return x, (Y)?
Run Code Online (Sandbox Code Playgroud)

给出的例子我想要的结果是:

function(3) -> 3
function(3, True) -> 3, 4
function(3, False) -> 3
Run Code Online (Sandbox Code Playgroud)

我正在使用 python 2.7

python return function

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

在 application.properties 中使用 spring.profile.default 时,Spring Boot 不加载默认配置文件

仅供参考:我发誓没有激活配置文件配置,例如 -D 或运行配置

\n\n

目标

\n\n

当应用程序在没有任何激活配置文件的情况下启动时,dev配置文件将默认激活。

\n\n

问题

\n\n

我已经设置了spring.profile.default = dev,并且我希望开发配置文件被激活。但事实并非如此。

\n\n

我做了什么

\n\n

Run Environment

\n\n

Spring-Boot-版本:2.1.2 发布

\n\n

What I\'m referred

\n\n

1) 如何在 Spring Boot 应用程序中使用配置文件 - \n https://www.javacodegeeks.com/2019/07/profiles-spring-boot-application.html#respond

\n\n

这是我所做的代码

\n\n

/resources/application.properties

\n\n
spring.profiles.default= dev\n\napplication.environment=This is a "Default" Environment\n
Run Code Online (Sandbox Code Playgroud)\n\n

/resources/application-dev.properties

\n\n
application.environment=This is a "dev" Environment\nserver.port= 8082\n
Run Code Online (Sandbox Code Playgroud)\n\n

/ProfileController.java

\n\n
@RestController\n@RequestMapping("/v1")\npublic class ProfileController {\n\n    @Value("${application.environment}")\n    private String applicationEnv;\n\n    @GetMapping\n    public String getApplicationEnv(){\n        return applicationEnv;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果

\n\n

localhost/v1 …

java spring-profiles spring-boot

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

如果消费者组成员宕机,Kafka 消息会发生什么?

假设我们有一个名为的主题Topic和一个CG包含三个消费者的消费者组。组偏移等于 0。

消费者开始阅读消息。

读取顺序:

  1. 消费者 1 读取消息 1。
  2. 消费者 2 读取消息 2。
  3. 消费者 3 读取消息 3。
  4. 消费者 2 提交消息 2。
  5. 消费者 3 提交消息 3。
  6. 消费者 1 处理消息 1 失败并关闭。

问题是:消息 1 会发生什么?

或者也许我错误地理解了消费者如何阅读消息,因为我是 Kafka 的新手。

版本:Apache Kafka 2.4.0

apache-kafka

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

尝试将 MockMvc 与 Wiremock 一起使用

我正在尝试使mockMvc 调用与wiremock 一起运行。但是代码中下面的mockMvc调用不断抛出404而不是预期的200 HTTP状态代码。

我知道wiremock正在运行..当wiremock运行时我可以通过浏览器执行http://localhost:8070/lala 。

有人可以建议吗?


@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApp.class)
@AutoConfigureMockMvc
public class MyControllerTest { 


    @Inject
    public MockMvc mockMvc;

    @ClassRule
    public static final WireMockClassRule wireMockRule = new WireMockClassRule(8070);

    @Rule
    public WireMockClassRule instanceRule = wireMockRule;

    public ResponseDefinitionBuilder responseBuilder(HttpStatus httpStatus) {
        return aResponse()
                .withStatus(httpStatus.value());
    }

    @Test
    public void testOne() throws Exception {
        stubFor(WireMock
                .request(HttpMethod.GET.name(), urlPathMatching("/lala"))
                .willReturn(responseBuilder(HttpStatus.OK)));

        Thread.sleep(1000000);

        mockMvc.perform(MockMvcRequestBuilders.request(HttpMethod.GET, "/lala")) .andExpect(status().isOk());
    }

}
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot wiremock

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

如何从给定的 Instant 获取第二天的日期结束时间?(爪哇)

我有一个即时日期,例如:2020-03-09T20:13:57.089Z并且我想在即时中找到第二天的结束时间,例如 - 2020-03-10T23:59:59.089Z(这将是与初始日期相比的第二天的结束时间)

如何使用 Java 中的 Instant 来做到这一点?

java time date java-time

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

Java Stream按一个属性分组并按另一个属性收集最大元素

我想知道流(或收集器)中是否已经实现了一个功能,它首先按属性对流进行分组,然后返回按另一个属性排序的列表中的第一个元素。例如,以下代码尝试使用第一个属性对对象流进行分组,然后想要收集具有第二个属性的最高值的对象。

class MyClass{
 String att1;
 String att2;
}
Run Code Online (Sandbox Code Playgroud)

现在,我想用 Stream myClassStream 来实现这样的东西 -

Map<String,MyClass> myMap = myClassStream().collect(Collectors.groupingBy(MyClass::getAtt1)); //Now I want to do Sorting after grouping to collect only the element which has the highest value of attr2.
Run Code Online (Sandbox Code Playgroud)

我使用简单 for 循环的代码是:

Map<String, MyClass> postAnalyticsMap = new HashMap<>();
for (MyClass post : myClassList) {
      if (post.get(post.getAtt1()) == null) {
               post.put(post.getAtt1(), post);
      } else {
               MyClass existingClass = postAnalyticsMap.get(post.getAtt1());
               if (existingPostAnalytics.getAtt2() < post.getAtt2()) {
                    postAnalyticsMap.put(post.getAtt1(), post);
               }
        }
  }
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽。

java java-8 java-stream

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

如何在 Jackson JsonNode 中使用点导航

我有以下代码:

 private val parsed = ObjectMapper().readTree(vcap)
 parsed.get("spaces")?.firstOrNull()?.get("block1")?.asText()
Run Code Online (Sandbox Code Playgroud)

我想使用点符号进行导航(出于可读性原因)。就像是:

 private val parsed = ObjectMapper().readTree(vcap)
 parsed.get("spaces[0].block1")?.asText()
Run Code Online (Sandbox Code Playgroud)

是否可以?

java json jackson kotlin

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

Spring boot @Value 属性在测试用例中为 null

我想从 application.properties 获取值。

@ExtendWith(MockitoExtension.class)
public class CurrencyServiceTest {

    @Mock
    private OpenExchangeRatesClient openExchangeRatesClient;

    @Value("${openexchangerates.app.id}")
    private String appId;

    @Value("${openexchangerates.currency.base}")
    private String base;

...
Run Code Online (Sandbox Code Playgroud)

问题是 appId 和 base 在测试中为 null。这是什么原因呢?

java testing mockito spring-boot

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