Spring 是一個開源框架,是為了解決企業應用程序開發復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個組件,同時為 J2EE 應用程序開發提供集成的框架。
☆
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規范與實際的應用程序代碼分開。
☆
Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。
☆
Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊為基于 Spring 的應用程序中的對象提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務管理集成到應用程序中。
在此 我做了個小demo 基于Spring的核心Ioc(inversion of control) 與面向切面編程AOP(Aspect Oriented Programming)。。。。。
這個例子主要完成的義務邏輯是對信息的保存,主要代碼如下:
package com.dr.service;
import com.dr.DAO.ProductDAO;
import com.dr.model.Product;
public class ProductService {
private ProductDAO productDAO;
public void add(Product product){
productDAO.save(product);
}
public ProductService(ProductDAO productDAO){
super();
System.out.println("ProductServic :ProductService");
this.productDAO = productDAO;
}
}
DAO層代碼如下:
package com.dr.DAO;
import com.dr.model.Product;
public interface ProductDAO {
public void save(Product product);
}
package com.dr.DAO.impl;
import com.dr.DAO.ProductDAO;
import com.dr.model.Product;
public class ProductDAOImpl implements ProductDAO {
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("ProductDAOImple :setName");
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
System.out.println("ProductDAOImpl :setId");
this.id = id;
}
public void save(Product product) {
//Hibernate
//JDBC
//XML
//NetWork
System.out.println("ProductDAOImpl :save :product saved!");
this.toString();
}
public String toString(){
System.out.println("id:"+id+"|name:"+name);
return null;
}
}
beans.xml部分代碼:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="p" class="com.dr.DAO.impl.ProductDAOImpl">
<!--采用 setter()方法依賴注入-->
<property name="name" value="11"></property>
<property name="id" value="22"></property>
</bean>
<bean id="productService" class="com.dr.service.ProductService">
<constructor-arg>
<ref bean="p"/>
</constructor-arg>
</bean>
</beans>
測試類的代碼如下所示:
package com.dr.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dr.model.Product;
import com.dr.service.ProductService;
//Dependency Injection 依賴注入
//Inverse of Control 控制反轉
public class ProductServiceTest {
@Test
public void testAdd() throws Exception {
//實例化應用上下文,Xml類路徑應用上下文
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
//getBean() 所得到得對象是Object類型的,所有在此必須強制轉換。。。
ProductService service = (ProductService) ctx.getBean("productService");
Product product = new Product();
product.toString();
product.setId(20);
product.setName("蘋果");
service.add(product);
}
}
posted on 2011-03-05 21:49
龍ぜ殘劍 閱讀(2722)
評論(0) 編輯 收藏