AOP
aop面向切面編程是什麼呢
我理解的aop是面向規則編程,定一個規則然後所有的bean都要遵守這個規則。
1.Aspect切面
就是相當於把所有的bean裏面的都會調用的方法A,這個方法A就相當於一個切面。可以在一個類中定義切點。
2.JoinPoint連接點
通常作用方法,獲取獲得這個方法的參數啊,返回值啊。
3.PointCut切入點
這個就比較好理解了,就是規則的作用域,你想讓你這個規則作用與哪個類,哪個包下。
4.advice通知
一個方法執行前後還有異常都會產生一個通知。
通知又分好幾種:
1.Before
方法執行前的通知,你可以在方法執行前做一些處理
2.After
放在執行後的通知,你可以在方法執行後做一些處理
3.AfterReturn
方法執行後得到返回值的通知。
4.AfterThrowing
方法發生異常的通知
5.Around
環繞通知,方法完成前後通知
下面通過demo演示
Aop實現
Controller:
測試一下:
通過打印log我們可以看出AOP已經起了作用。
那麼AOP能實現什麼功能呢?
事物管理(Translation)
日誌
權限
緩存
還有很多,我們可以在方法前後做很多東西根據你的業務做一些自定義功能。
以上就是AOP
BeanFactory和FactoryBean的區別,這也是面試遇到的問題之一。
我認爲:
首先beanFactory是一個bean工廠,配置註冊使用bean,可以看到源碼裏面的getBean()方法就是從ioc容器取出bean,
FactoryBean是一個bean,一個特殊的bean,相當於一個工廠可以生產一個bean的實例,內部getObject()就是生產一個bean的具體實現。spring 在和mybatis整合的時候原理用的是jdk的動態代理然後返回一個bean的實例,就是用factorybean產生的。