关于@PostConstruct和静态变量注入和spring初始化操作

@PostConstruct这个注解是由Java提供的,而不是spring提供的,它用来修饰一个非静态的void方法。它会在服务器加载Servlet的时候运行,并且只运行一次。bean创建完成空对象,就开始进行@Autowire、@PostConstruct赋值。

@Component
public class SystemConstant {

    public static String surroundings;

    @Value("${spring.profiles.active}")
    public String environment;

    @PostConstruct
    public void initialize() {
        System.out.println("初始化环境...");
        surroundings = this.environment;
    }
}

执行顺序:
第一种:当直接调用(没有new对象)静态方法时候:代码块(静态变量按照顺序)就执行—–方法执行。
第二种创建对象:执行父类静态代码—-执行子类的静态代码—-执行父类构造方法—–执行子类的构造方法(注:@PostConstruct修饰的方法是在构造方法之后执行的)
注:静态变量和静态代码块都是按照代码书写顺序执行的,对于静态代码块只要是操作(调用静态方法或者新建一个类等)这个类就会执行(包括静态变量)

静态变量也可以用value注解进行注入,只要将注解放在变量的set方法上即可,且方法不可为静态方法

@Component
public class SystemConstant {

    public static String surroundings;

    @Value("${spring.profiles.active}")
    public String environment;
    
	@Value("${spring.profiles.active}")
	public void setSurroundings(String surroundings ){
		SystemConstant.surroundings = surroundings;
		// 这里一定要加入一段执行代码什么都可以 否则注入失败
		// 当你要使用其他静态变量时也要在这里赋值
	}

}
@Component
public class PathConstant {

    private static String prefix;

    @Value("${constant.file-path.prefix}")
    public void setPrefix(String prefix) {
        PathConstant.prefix = prefix;
        PathConstant.VIDEO_PATH =  prefix +"/media/video";
        PathConstant.PAPER_INTERPRET_HTML_PATH = prefix +"/html/paper_interpret/";
        PathConstant.PAPER_INTERPRET_IMG_PATH = prefix +"/img/paper_interpret/";
    }

    /**
     * 首页视频文件路径
     */
    public static String VIDEO_PATH;

    /**
     * 论文解读html路径
     */
    public static String PAPER_INTERPRET_HTML_PATH;

    /**
     * 论文解读图片路径
     */
    public static  String PAPER_INTERPRET_IMG_PATH;
    

}

关于spring初始化操作

实现ApplicationRunner接口,然后Override这个ApplicationRunner接口的run方法即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L-960

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值