使用场景:
如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
import lombok.Data;
import org.springframework.stereotype.Component;
/**
* Bean实例
*/
@Data
@Component
public class Job {
private String jobId;
}
service类的代码如下:
import com.space.aspect.bo.Job;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@Service
public class JobService {
private Job job;
// 构造器注入方式
@Autowired
JobService(Job job){
this.job = job;
}
@PostConstruct
private void init(){
// 初始化成员变量
job.setJobId("testJobId");
}
// 对外提供的一个方法
public String getJobId() {
return job.getJobId();
}
}
执行顺序
JobService有参构造器注入Job >> @PostConstruct初始化Job变量
另一种方式(不推荐):
import com.space.aspect.bo.Job;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@Service
public class JobService {
// 属性注入方式
@Autowired
private Job job;
// 无参构造器(可以不写)
JobService(){
}
@PostConstruct
private void init(){
// 初始化成员变量
job.setJobId("testJobId");
}
// 对外提供的一个方法
public String getJobId() {
return job.getJobId();
}
}
执行顺序
JobService无参构造器>>@Autowired注入Job >> @PostConstruct初始化Job变量
网友评论