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)  編輯  收藏


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 临沧市| 民勤县| 清镇市| 靖宇县| 南平市| 永靖县| 简阳市| 城市| 凉城县| 古蔺县| 萍乡市| 祁门县| 桂东县| 湘潭市| 汝南县| 德安县| 武义县| 中超| 雷波县| 井研县| 滨海县| 牡丹江市| 临江市| 大理市| 鸡东县| 自治县| 临清市| 滦平县| 蓝山县| 丹凤县| 沂南县| 福海县| 雷州市| 毕节市| 资中县| 雅江县| 永胜县| 永昌县| 昭苏县| 香格里拉县| 额济纳旗|