马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1。这个部分除了6,9都在这了
- package com.example.springbootdemo3.lifebeean;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.*;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.stereotype.Component;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- /**
- * description
- *
- * @author PC 2025/02/27 20:26
- */
- @Component
- public class MyBeanLife implements BeanNameAware, BeanFactoryAware, ApplicationContextAware, InitializingBean, DisposableBean {
- private String name;
- // 构造函数,当Bean被实例化时调用
- public MyBeanLife() {
- System.out.println("1.调用了Bean的构造函数");
- }
- @Value("name")
- public void setName(String name) {
- this.name = name;
- System.out.println("2.调用了Bean的set方法(属性的依赖注入)");
- }
- @Override
- public void setBeanName(String s) {
- System.out.println("3.调用了BeanNameAware的setBeanName方法,beanName:" + s);
- }
- @Override
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- System.out.println("4.调用了BeanFactoryAware的setBeanFactory方法,beanFactory:" + beanFactory.toString());
- }
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- System.out.println("5.调用了ApplicationContextAware的setApplicationContext方法,applicationContext:" + applicationContext.toString());
- }
- @PostConstruct
- public void postConstruct() {
- System.out.println("7.调用了@PostConstruct注解的方法");
- }
- @Override
- public void afterPropertiesSet() throws Exception {
- System.out.println("8.调用了InitializingBean的afterPropertiesSet方法");
- }
- @PreDestroy
- public void preDestroy() {
- System.out.println("10.调用了@PreDestroy注解的方法");
- }
- @Override
- public void destroy() throws Exception {
- System.out.println("11.调用了DisposableBean的destroy方法");
- }
- }
复制代码 2. 6和9部分
BeanPostProcessor的两个方法是所有Bean都会调用,除了实现这个接口的Bean,所以为了方便加了判定
- package com.example.springbootdemo3.lifebeean;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.config.BeanPostProcessor;
- import org.springframework.stereotype.Component;
- /**
- * description
- *
- * @author PC 2025/02/27 21:00
- */
- @Component
- public class MyBeanLife2 implements BeanPostProcessor {
- @Override
- public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
- if (!beanName.equals("myBeanLife")) {
- return bean;
- }
- System.out.println("6.调用了BeanPostProcessor的postProcessBeforeInitialization方法,beanName:" + beanName);
- return bean;
- }
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- if (!beanName.equals("myBeanLife")) {
- return bean;
- }
- System.out.println("9.调用了BeanPostProcessor的postProcessAfterInitialization方法,beanName:" + beanName);
- return bean;
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |