美文网首页
@Service注解类通过依赖注入初始化成员变量

@Service注解类通过依赖注入初始化成员变量

作者: cherishpf | 来源:发表于2020-04-29 17:23 被阅读0次

    使用场景:

    如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@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变量

    相关文章

      网友评论

          本文标题:@Service注解类通过依赖注入初始化成员变量

          本文链接:https://www.haomeiwen.com/subject/dssnwhtx.html