springcloud初始化构造器以及Component

本文探讨了SpringBoot启动顺序,强调构造器在@Component注解的@Autowired和@PostConstruct之前执行。同时,通过示例展示了如何利用BeanPostProcessor在构造器初始化之前操作Component对象。代码中创建了一个WsUrlVo类,它实现了BeanPostProcessor接口,以在bean初始化前后进行处理。静态变量base_url_static被注入了从yml配置文件中读取的参数,并通过@Component注解和@Bean方法提供访问。

1.springboot 启动顺序 构造器 > @Component ( @Autowired > @PostConstruct )

2.构造器是spring 初始化的时候,直接运行

3.使用BeanPostProcessor 可以在构造器初始化前,运行Component对象

4.静态方法的使用,系统会为静态方法分配一个固定的内存空间。而普通方法,会随着对象的调用而加载,当使用完毕,会自动释放掉空间。

5.获取yml配置文件参数,注入到静态变量中,使用@Component 注解作用该配置类,并且implements BeanPostProcessor 接口

 

代码如下:

 

 

import org.springframework.beans.BeansException;

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

import org.springframework.beans.factory.config.BeanPostProcessor;

import org.springframework.context.annotation.Bean;

import org.springframework.core.annotation.Order;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

 

@Component

@Order(1)

public class WsUrlVo implements BeanPostProcessor {

 

public static String base_url_static;

 

@Value("${ws.base_url}")

public String base_url;

@PostConstruct

public void setBase_url(){

base_url_static =this.base_url;

}

@Bean

public static String getBase_url(){

return base_url_static;

}

 

@Override

public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

//bean初始化之前,要干点什么或者什么都不干,但是干不干都要把人家给返回回去,不能一进来就出不去了~

return bean;

}

 

@Override

public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {

//bean已经初始化完了,这时候你想干点什么或者什么都不干,和上面一样,都要给人家返回回去

return bean;

}

 

 

// private static String base_url;

// @Value("${ws.base_url}")

// public void setBase_url(String base_url){

// this.base_url = base_url;

// }

// public static String getBase_url(){

// return Base_url;

// }

//

 

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值