将Spring Boot 2.2.9.RELEASE升级到2.3.2.RELEASE服务后无法正常工作

时间:2020-08-09 21:22:03

标签: spring spring-boot

我的spring boot微服务当前在Spring-Boot 2.2.9.RELEASE中运行

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

我也仍然使用

  • Spring-Cloud Hoxton.SR7
    • spring-cloud-starter-sleuth 2.2.4
    • spring-cloud-starter-zipkin 2.2.4
    • spring-boot-starter-data-rest 2.2.9
    • spring-boot-starter-quartz 2.2.9
    • spring-boot-configuration-processor 2.2.9
    • spring-boot-starter-web 2.2.9
    • spring-cloud-starter-netflix-eureka-client 2.2.4
    • spring-boot-starter-actuator 2.2.9
    • spring-boot-starter-data-jpa 2.2.9
  • PostgreSQL
  • Logstash 6.4
  • 日志2.1.4
  • 龙目岛1.18.12

依赖性。

现在我想切换到Spring Boot 2.3.2.RELEASE。我可以编译代码而没有任何错误。启动服务后,我看到了

信息:HHH000490:使用JtaPlatform实现:[org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]

日志消息。现在有错误。然后停止部署过程。什么都没发生。

目前,我不知道为什么它没有运行。有人给小费吗?

1 个答案:

答案 0 :(得分:0)

我想我找到了问题。

from django.db import models

class Bundle(models.Model):
    name = models.charField(max_length=100)
    items = models.ManytoManyField(Item)
    popularity = models.CharField(max_length=100)

    def map_and_save(data=None):
        if data is None:
            return
        if isinstance(data, list):
            mapper = {"courses": ["items"], "description": "name", "popularity": "popularity"}
            for datum in data:
                bundle_data = {}
                item_instances = []
                for key, val in datum.items():
                    field_name = mapper.get(key, None)
                    if field_name is None:
                        continue
                    elif isinstance(field_name, list):
                        for _val in val:
                            item = Item.objects.create(name=_val.get("title"))
                            item_instances.append(item)
                        continue
                    bundle_data[field_name] = val
                bundle = Bundle.objects.create(**bundle_data)
                bundle.items.add(*item_instances)

class Item(models.Model):
    name = models.charField(max_length=100)
    provider = models.ForeignKey(provider,null=True, blank=False,on_delete=models.CASCADE, related_name="+")

比起我在代码中使用Exceutor:

@EnableEurekaClient
@EnableScheduling
@SpringBootApplication
@EnableAsync
public class AccountApplication {

    public static void main(String[] args) {
        SpringApplication.run(AccountApplication.class, args);
    }

    @Bean("threadPoolTaskExecutor")
    public Executor asyncExecutor() {
        final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(20);
        executor.setMaxPoolSize(1000);
        executor.setThreadNamePrefix("AsyncThread-");
        executor.initialize();
        return executor;
    }

}

使用此配置,服务无法正确启动。

现在,@Bean(“ threadPoolTask​​Executor”)配置已删除,我仅使用@Async。

但是为什么它不能与Spring Boot Starter 2.3.x一起使用?而且日志中没有错误消息。