Discuss / Java / @PreDestroy失效求解

@PreDestroy失效求解

Topic source

试了网上好几种解决方法都不奏效:

1.把jdk14换成1.8

2.AppService添加注解:

@Scope("singleton")

这是我的代码:

package com.itranswarp.learnjava;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.nio.charset.StandardCharsets;

import java.util.stream.Collectors;

import javax.annotation.PostConstruct;

import javax.annotation.PreDestroy;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.core.io.Resource;

import org.springframework.stereotype.Component;

@Component

public class AppService {

@Value("1")

private int version;

@Value("classpath:/logo.txt")

private Resource resource;

private String logo;

@PostConstruct

public void init() throws IOException {

try (var reader = new BufferedReader(

new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {

this.logo = reader.lines().collect(Collectors.joining("\n"));

}

}

@PreDestroy

public void shutdown() {

        System.out.println("end");

}

public void printLogo() {

System.out.println(logo);

System.out.println("app.version: " + version);

}

}

叁木辛尧

#2 Created at ... [Delete] [Delete and Lock User]

要调用容器的close方法,predestory才会执行。


  • 1

Reply