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

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

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

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

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


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

          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>



          測(cè)試類的代碼如下所示:



          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 {
             //實(shí)例化應(yīng)用上下文,Xml類路徑應(yīng)用上下文
            ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
            //getBean() 所得到得對(duì)象是Object類型的,所有在此必須強(qiáng)制轉(zhuǎn)換。。。
            ProductService service = (ProductService) ctx.getBean("productService");
            
            Product product = new Product();
            product.toString();
            product.setId(20);
            product.setName("蘋(píng)果");
            service.add(product);
            
           }

          }



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


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

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 上虞市| 台北县| 于都县| 新昌县| 竹北市| 平武县| 攀枝花市| 霞浦县| 阳谷县| 崇明县| 阿克苏市| 黄大仙区| 德令哈市| 鹤壁市| 始兴县| 乌兰察布市| 凌海市| 开平市| 维西| 二连浩特市| 罗江县| 奈曼旗| 鲁山县| 柞水县| 五原县| 武宁县| 蓬莱市| 浦北县| 仪陇县| 沁水县| 司法| 宁夏| 武威市| 河北省| 阿克苏市| 遵义县| 阳西县| 沂南县| 浦东新区| 隆尧县| 洱源县|