spring mvc兩大核心技術:1控制反轉 2面向切面的程式設計

Ideality_hunter發表於2016-05-25

1控制反轉就是:

1)呼叫某個類的一個方法,將該類引入成員變數,直接呼叫成員變數類的那個方法即可,不用new,spring mvc替你new了。

2)介面程式設計,你只呼叫介面的某個方法就行了。

有的工程使用spring mvc的控制反轉水平比較低,其spring mvc框架只實現了1)。而有的工程控制反轉水平高,其spring mvc框架實現了1)和2)。

1.1舉個例子:

有這麼個LoginAction類,它想呼叫AdminService的hello()方法的時候,不引入控制反轉,需要自己new;引入控制反轉,就不用自己new了,直接呼叫就行。

public class LoginAction extends ActionSupport
{
private AdminService adminService = null;
public String execute() throws Exception
{
//spring mvc的控制反轉中,spring mvc就是提我們new了一下而已.那麼目的是什麼?實現了介面和實現的分離,使得呼叫介面時不用關注他是怎麼實現的。

               //不引入控制反轉
//開始
AdminService aa=new AdminServiceIMP();
String b=aa.hello();
System.out.println("##########################BBBBBBBBBBBB"+b);
//結束

               //引入控制反轉
adminService.hello();//該種方式和//開始//結束之間的程式碼等效
}

其spring的配置檔案中,控制反轉的配置如下:

<bean name="login" class="com.example.struts.LoginAction">
<property name="adminService">
<ref local="AdminService" />

</property>
</bean>

<bean id="AdminService" class="com.example.service.AdminServiceIMP">
</bean>

AdminService介面和AdminServiceIMP實現類如下:

public interface AdminService
{
     String hello();
}

public class AdminServiceIMP implements AdminService
{
 public  String hello()
 {
 return "hello";
 }

}


2面向切面的程式設計

面向切面的程式設計,就是jf框架的@before欄位。就是在一個類的某方法開始前或者結束後,插入一段程式碼,這樣就可以在不動原來的程式碼基礎上進行條件驗證等操作。便於後期的程式擴充套件,這種擴充套件不用對之前的程式碼做修改。




相關文章