java學習

          java學習

           

          利用BeanPostProcessor接口實現bean初始化的前后執行方法

          1、aop的簡單實現
          public class User implements InitializingBean,DisposableBean{
          public String toString() {
          System.out.println("userdddd");
          return "444";
          }
          @Override
          public void afterPropertiesSet() throws Exception {
          System.out.println(" user afterPropertiesSet");
          }
          @Override
          public void destroy() throws Exception {
          System.out.println("user destroy");
          }
          }
          public class LogUser extends User{
          public String toString() {
          System.out.println("log start");
          super.toString();
          System.out.println("log end");
          return "";
          }
          }
          public interface MyApplicationContextAware {
          void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
          }
          @Component
          public class Dog4 implements MyApplicationContextAware{
          ApplicationContext applicationContext;
          public ApplicationContext getApplicationContext() {
          return applicationContext;
          }
          @Override
          public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
          this.applicationContext=applicationContext;
          }
          }
          @Component
          public class MyBeanPostProcessor implements BeanPostProcessor{
          @Autowired
          ApplicationContext applicationContext;
          @Override
          public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
          System.out.println("postProcessAfterInitialization=="+beanName);
          return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
          }
          @Override
          public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
          System.out.println("postProcessBeforeInitialization=="+beanName);
          if(bean instanceof User) {
          return new LogUser();
          }
          if(bean instanceof MyApplicationContextAware) {
          MyApplicationContextAware my=(MyApplicationContextAware) bean;
          my.setApplicationContext(applicationContext);
          }
          return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName);
          }
          }
          public class App {
          public static void main(String[] args) {
          AnnotationConfigApplicationContext aa=new AnnotationConfigApplicationContext("com.yjw");
          Dog4 dog = aa.getBean(Dog4.class);
          System.out.println(dog.getApplicationContext());
          User user = aa.getBean(User.class);
          System.out.println(user.toString());
          aa.close();
          }
          }

          posted on 2018-03-06 15:34 楊軍威 閱讀(471) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辽宁省| 兴城市| 庆云县| 平陆县| 顺平县| 昌宁县| 山阴县| 万山特区| 高州市| 文化| 杭锦旗| 文昌市| 宁陕县| 兴文县| 西吉县| 鹿泉市| 新晃| 鹿邑县| 广丰县| 灵丘县| 安塞县| 盐池县| 中江县| 瑞安市| 灵台县| 临洮县| 方城县| 石家庄市| 安康市| 西华县| 高尔夫| 稻城县| 错那县| 龙川县| 天门市| 宣威市| 垣曲县| 白城市| 林芝县| 彩票| 库伦旗|