posts - 26,  comments - 14,  trackbacks - 0
           Spring 是一個開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的。框架的主要優(yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個組件,同時為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。 

                  ☆ 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory 使用控制反轉(zhuǎn) (IOC) 模式將應(yīng)用程序的配置和依賴性規(guī)范與實際的應(yīng)用程序代碼分開。

            ☆ Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業(yè)服務(wù),例如 JNDI、EJB、電子郵件、國際化、校驗和調(diào)度功能。

            ☆ Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。

          在此 我做了個小demo 基于Spring的核心Ioc(inversion of control) 與面向切面編程AOP(Aspect Oriented Programming)。。。。。


          這個例子主要完成的義務(wù)邏輯是對信息的保存,主要代碼如下:

          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    控制反轉(zhuǎn)
          public class ProductServiceTest {

           @Test
           public void testAdd() throws Exception {
             //實例化應(yīng)用上下文,Xml類路徑應(yīng)用上下文
            ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
            //getBean() 所得到得對象是Object類型的,所有在此必須強制轉(zhuǎn)換。。。
            ProductService service = (ProductService) ctx.getBean("productService");
            
            Product product = new Product();
            product.toString();
            product.setId(20);
            product.setName("蘋果");
            service.add(product);
            
           }

          }



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


          網(wǎng)站導(dǎo)航:
           
          <2011年3月>
          272812345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 敖汉旗| 芜湖县| 贵港市| 曲松县| 开鲁县| 顺义区| 法库县| 高邮市| 无为县| 柘城县| 七台河市| 垣曲县| 车险| 鲁甸县| 松溪县| 秦皇岛市| 清远市| 公主岭市| 旅游| 高青县| 中宁县| 上杭县| 宜兰县| 惠州市| 定结县| 明水县| 台前县| 吴桥县| 锡林郭勒盟| 永靖县| 古浪县| 朝阳区| 普陀区| 邳州市| 盘锦市| 巴彦淖尔市| 盱眙县| 晋州市| 舟曲县| 阳信县| 兴和县|