试了网上好几种解决方法都不奏效:
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);
要调用容器的close方法,predestory才会执行。
Sign in to make a reply
橘子汽水味的程序媛
试了网上好几种解决方法都不奏效:
1.把jdk14换成1.8
2.AppService添加注解:
这是我的代码:
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);
}
}