【问题标题】:Spring boot page loads slowSpring Boot 页面加载缓慢
【发布时间】:2018-11-06 08:22:28
【问题描述】:

我有一个相当简单的 Web 应用程序,其中包含一个用于编辑实体的页面。 加载大约需要 30 秒,我不明白为什么。 SQL 查询在一秒钟内完成。

我的控制器方法

@GetMapping(value = "/lasterapport/{id}")
public String lasterapport(Model model, @PathVariable("id") Long id) {
    model.addAttribute("lasterapport", lasterapportRepository.getOne(id));
    model.addAttribute("brukere", brukerRepository.findAll());
    model.addAttribute("lastere", maskinRepository.findLastere());
    model.addAttribute("trucker", maskinRepository.findTrucker());
    model.addAttribute("masser", masseRepository.findAll());
    model.addAttribute("destinasjoner", destinasjonRepository.findAll());
    return "lasterapport";
}

我的实体(为了便于阅读,没有 getter 和 setter 以及构造函数)

@Entity
public class Lasterapport {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne
    private Bruker truckBruker;

    @ManyToOne
    private Bruker lasterBruker;

    @ManyToOne
    private Maskin truckMaskin;

    @ManyToOne
    private Maskin lasterMaskin;

    @ManyToOne
    private Masse masse;

    @ManyToOne
    private Destinasjon destinasjon;

    private Integer tonn;
    private Date tidspunkt;
    private String vifte_id;
}

我的视图只是一个表单,其中包含所有不同的多对一关系的选择输入

<div class="form-group">
        <label for="maskinLaster">Sjåfør laster</label>
        <select class="form-control" th:field="*{lasterBruker}">
                <option th:each="dropDownItem : ${brukere}"
                        th:value="${dropDownItem.id}"
                        th:text="${dropDownItem.navn}" >
                </option>
        </select>        
    </div>

我认为这与 Spring 如何处理表单数据有关?即使查询相当快,如果我不添加为选择输入提供选项的属性,页面几乎会立即完成加载。

【问题讨论】:

  • 如何逐行记录以了解耗时的分区方式
  • 延迟发生在控制器方法返回之后。在那之后,在页面显示之前我没有断点。

标签: hibernate spring-boot


【解决方案1】:

原来在此之前已经经历过:Thymeleaf Select Option Performance Issue

所以我的解决方案是不使用 th:field 并且页面会立即加载。

【讨论】:

    最近更新 更多