关于spring 的初始化

鉴于在编程时候,启动时候过于依赖经验,缺乏对框架知识的了解,初始化时候使用直接引用代码形式去初始化某些资源,而不是使用spring提供的方式去初始化。
原代码:
    @SpringBootApplication
public class TestApplication implements CommandLineRunner {
    public static void main(String[] args) {
        VirtualDataUtil.initVirtualData(); //用于初始化某些数据
        SpringApplication.run(TestApplication .class, args);
    }
}
虽然VirtualDataUtil.initVirtualData()确实可以在这样初始化数据,但是长远来说会造成代码的混乱。spring对bean的生命周期操作提供了支持,有java配置以及注解配置,本次只说一下注解说明。
注解方式有:@PostConstruct和@PreDestroy,@PostConstruct是在构造函数执行完之后执行,@PreDestroy是在bean销毁之前执行。
本次例子仅用注解注入,不使用xml配置  
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.springframework.stereotype.Component;

@Component
public class PersonService {
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @PostConstruct
    public void init() {
        System.out.println("I'm  init  method PostConstrut...." + message);
    }

    @PreDestroy
    public void dostory() {
        System.out.println("I'm  destory method @PreDestroy....." + message);
    }
}
@SpringBootApplication
public class TestApplication implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication .class, args);
    }

启动spring项目,会出现
这里写图片描述

然后在某些类执行其dostory方法,销毁bean前:

/**
 *
 */
@Component("qianhaiCreditGatewayService")
public class QianhaiCreditGatewayServiceImpl {
    @Autowired
    PersonService personService;
    /**
     * 测试
     * 
     * @param request
     * @return
     */
    @Override
    public String querySomething(String data) {
        personService.dostory();
        return data;
    }
}

这里写图片描述

编程之路漫漫悠长,不断学习才能不会落后,此文章只是简单讲了一下初始化的其中一个操作,如果有更好的做法或者此次做得不足的,请指点

你可能感兴趣的:(springboot)