1 通过@Bean
@Component
public class MyConfig {
@Bean(initMethod = "initMethod" ,destroyMethod = "destroyMethod")
public Code001 code001(){
return new Code001();
}
}
@Slf4j
public class Code001 {
public Code001() {
log.info("生成对象");
}
private void initMethod() {
log.info("初始化对象");
}
private void destroyMethod() {
log.info("销毁对象");
}
}
@Slf4j
public class Test001 {
public static void main(String[] args) throws Exception {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class);
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
log.info(beanDefinitionName);
}
//Code001 code001 = (Code001) applicationContext.getBean("com.wenhao.springbeanlifecycle.initialization.Code001");
//Code001 code001 = (Code001) applicationContext.getBean("com.wenhao.springbeanlifecycle.initialization.domain.Code001");
//System.out.println(code001);
Code001 code001 = (Code001) applicationContext.getBean("code001");
System.out.println(code001);
//code001.destroy();
//applicationContext.
}
}
2 通过 实现 InitializingBean, DisposableBean
@Slf4j
public class Code001 implements InitializingBean, DisposableBean {
public Code001() {
log.info("生成对象");
}
//第二种初始化和销毁方法
@Override
public void afterPropertiesSet() throws Exception {
log.info("初始化对象");
}
@Override
public void destroy() throws Exception {
log.info("销毁对象");
}
}
@Component
@Import(Code001.class)
public class MyConfig {
}
@Slf4j
public class Test001 {
public static void main(String[] args) throws Exception {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class);
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
log.info(beanDefinitionName);
}
//Code001 code001 = (Code001) applicationContext.getBean("com.wenhao.springbeanlifecycle.initialization.Code001");
Code001 code001 = (Code001) applicationContext.getBean("com.wenhao.springbeanlifecycle.initialization.domain.Code001");
System.out.println(code001);
//code001.destroy();
//applicationContext.
}
}
3 通过 @PostConstruct
@Slf4j
public class Code001 {
public Code001() {
log.info("生成对象");
}
@PostConstruct
private void initMethod() {
log.info("初始化对象");
}
@PreDestroy
private void destroyMethod() {
log.info("销毁对象");
}
}
@Component
@Import(Code001.class)
public class MyConfig {
}
@Slf4j
public class Test001 {
public static void main(String[] args) throws Exception {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MyConfig.class);
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
log.info(beanDefinitionName);
}
//Code001 code001 = (Code001) applicationContext.getBean("com.wenhao.springbeanlifecycle.initialization.Code001");
Code001 code001 = (Code001) applicationContext.getBean("com.wenhao.springbeanlifecycle.initialization.domain.Code001");
System.out.println(code001);
//Code001 code001 = (Code001) applicationContext.getBean("code001");
//System.out.println(code001);
//code001.destroy();
//applicationContext.
}
}