乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spring Framework介紹

       芳草小集 2006-03-24
       

      Spring Framework介紹

       Spring是一個屬於java/j2ee的架構(gòu)級框架,可以適用於java桌面系統(tǒng)或j2ee企業(yè)系統(tǒng)。它借助IoC(Inversion of Control)設(shè)計模式,對系統(tǒng)的各個模塊Bean進(jìn)行管理,實現(xiàn)系統(tǒng)的松耦合。借助AOP思想實現(xiàn)以聲明式方式使用企業(yè)級服務(wù),例如事務(wù)服務(wù)。

      當(dāng)系統(tǒng)的各個模塊象一塊塊積木搭建起來之後,Spring就象粘合劑把各個模塊粘合在一起,並進(jìn)行有效的控制。

      Spring框架可以提供一站式的企業(yè)應(yīng)用,包括了在表示層它實現(xiàn)了一個MVC、對JDBC、HIBERNATE等的支持、提供STRUTS的支持。Spring是組件化的,可以使用它提供的所有應(yīng)用,也可以選用其中的一個或二個組件,在應(yīng)用中更多是使用它提供的依賴注入Bean管理、事務(wù)性管理。

       一、應(yīng)用示例

      通過Spring的配置文件調(diào)用類的方法,輸入字符“Hello World”

      編寫一個接口類

      Public interface Ihello{

              public String getHello();

              public String getStr();

      }

      編寫接口實現(xiàn)類

      Public class Hello implements Ihello{

              private String hello;

              public void setHello(String hello){

                      this.hello=hello;

              }

              public String getHello() {

                      return this.hello;

              }

              public String getStr() {

                      return "test Spring";

              }

      }

      編寫Spring配置文件AppcontextHello.xml

      <?xml version="1.0" encoding="UTF-8"?>

      定義bean

      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd" >

      <beans>

          <bean id="hello" class="com.spring.test.Hello">

      注入

              <property name="hello">

                  <value>Hello World!!!!!!!!!</value>

              </property>

          </bean>

      </beans>

       

      編寫輸入類

      public class HelloWorld {

              public static void main(String[] args) {

                      AbstractApplicationContext appContext= new ClassPathXmlApplicationContext("/AppcontextHello.xml");

                      IHello hello=(IHello)appContext.getBean("hello");

                      System.out.println(hello.getHello());

                      System.out.println(hello.getStr());

              }

      }

      只要對接口編程,並不用知道是那個類實現(xiàn)了接口,所以如果要更換Hello實現(xiàn)類,只要修改配置文件只可。例如要把Hello換成HelloBaby,接口實現(xiàn)類如下:

       

              private String hello;

              public void setHello(String hello){

                      this.hello=hello;

              }

              public String getHello() {

                      return this.hello;

              }

              public String getStr() {

                      return "Hello Baby";

              }

      Spring 配置文件修改如下:

      <bean id="hello" class="com.spring.test.HelloBaby">

      這樣就完成的接口實現(xiàn)類的切換。

       

      下一個例子將顯示在SpringBean管理中注入數(shù)據(jù)源,實現(xiàn)更強(qiáng)的注入功能,這樣就可以自由地切換不同的數(shù)據(jù)庫類型和數(shù)據(jù)源了。

      以下的例子將讀取數(shù)據(jù)表Book的一行記錄。Bookid、bookname(varchar10)author(varchar10)、price三個字段。

       

      新建值對象Book

      public class Book {

              private int id;

              private String bookname;

              private String author;

              private float price;

              public String getAuthor() {

                      return author;

              }

              public void setAuthor(String author) {

                      this.author = author;

              }

      //以下省略了部分SET、GET方法

      }

       

      新建接口IbookDAO

      public interface IbookDAO {

              public Book getBook();

       

      }

       

      實現(xiàn)接口的數(shù)據(jù)訪問類BookDAO

      public class BookDAO implements IbookDAO {

              private DataSource datasource;

              public void setDatasource(DataSource datasource){

                      this.datasource=datasource;

              }

       

              public Book getBook() {

                      // TODO 自動產(chǎn)生方法 Stub

                      Book book=new Book();

                      Connection conn=null;

                      Statement stmt=null;

                      ResultSet rs=null;

                      try{

                              conn=datasource.getConnection();

                              stmt=conn.createStatement();

                              rs=stmt.executeQuery("select top 1 id,bookname,author,price from book");

                              if(rs.next()){

                                      book.setId(rs.getInt("id"));

                                      book.setBookname(rs.getString("bookname"));

                                      book.setAuthor(rs.getString("author"));

                                      book.setPrice(rs.getFloat("price"));

                              }

                      }catch(SQLException e){

                              e.printStackTrace();

                      }finally{

                              try{

                                      if(rs!=null){

                                              rs.close();

                                              rs=null;

                                      }

                                      if(stmt!=null){

                                              stmt.close();

                                              stmt=null;

                                      }

                                      if(conn!=null){

                                              conn.close();

                                              conn=null;

                                      }

                              }catch(Exception ex){

                                      ex.printStackTrace();

                              }

                      }

                      return book;

              }

      }

       

      Spring 配置文件AppcontextDataSource.xml

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd" >

      <beans>

          <bean id="myDataSource"

              class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

              <property name="driverClassName">

                  <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

              </property>

              <property name="url">           <value>jdbc:microsoft:sqlserver://222.118.20.108;DatabaseName=zmlftest</value>

              </property>

              <property name="username">

                  <value>dbname</value>

              </property>

              <property name="password">

                  <value>access</value>

              </property>

          </bean>

          <bean id="bookDAO" class="com.spring.test.book.BookDAO">

              <property name="datasource">

                  <ref local="myDataSource" />

              </property>

          </bean>

      </beans>

      以上定義了數(shù)據(jù)源,定義Bean”bookDAO”時把datasource注入

       

      編寫調(diào)用類BookClient

      public class BookClient {

              public static void main(String[] args) {

                      AbstractApplicationContext appContext= new ClassPathXmlApplicationContext("/AppcontextDataSource.xml");

                      IbookDAO bookdao=(IbookDAO)appContext.getBean("bookDAO");

                      Book book=bookdao.getBook();

                      System.out.println(book.getId());

                      System.out.println(book.getBookname());

                      System.out.println(book.getAuthor());

                      System.out.println(book.getPrice());

              }

      }

       

      利用Spring進(jìn)行事務(wù)管理

      該示例演示在一個方法中同時插入二條記錄,當(dāng)其中一個操作出錯時,進(jìn)行回滾。

      數(shù)據(jù)訪問接口IbookDAO.java實現(xiàn)一個插入記錄方法。

      public interface IbookDAO {

              public void saveBook(Book book) throws DataAccessException;

      }

       

      數(shù)據(jù)訪問類BookDAO.java,它擴(kuò)展了SpringJDBC基類,方法的代碼變得很簡潔。

      public class BookDAO extends JdbcDaoSupport implements IbookDAO{

       

              public void saveBook(Book book) throws DataAccessException {

                      this.getJdbcTemplate().execute("insert into book(bookname,author,price) values(‘"+book.getBookname()+"‘,‘"+book.getAuthor()+"‘,‘"+book.getPrice()+"‘)");

              }

      }

       

      業(yè)務(wù)接口IbookService.java

      public interface IbookService {

              public void saveBook()throws DataAccessException;

       

      }

       

      實現(xiàn)業(yè)務(wù)方法BookService.java

      public class BookService implements IbookService {

              private IbookDAO bookdao;

              public void setBookdao(IbookDAO bookdao){

                      this.bookdao=bookdao;

              }

       

              public void saveBook()throws DataAccessException {

                      // TODO 自動產(chǎn)生方法 Stub

                      //AbstractApplicationContext appContext= new ClassPathXmlApplicationContext("/AppcontextTran.xml");

                      //IbookDAO bookdao=(IbookDAO)appContext.getBean("bookDAO");

                      Book book1=new Book();

                      book1.setBookname("bookname1");

                      book1.setAuthor("author1");

                      book1.setPrice(Float.parseFloat("1.2"));

                      Book book2=new Book();

                      book2.setBookname("bookname2");

                      book2.setAuthor("author2");

                      book2.setPrice(Float.parseFloat("2.6"));

                      bookdao.saveBook(book1);

                      bookdao.saveBook(book2);    

              }

      }

       

       

      Spring配置文件AppcontextTran.xml

      主要的代碼如下: 

          <bean id="transactionManager"

              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

              <property name="dataSource">

                  <ref local="myDataSource" />

              </property>

          </bean>

          <bean id="bookDAO" class="com.spring.test.tran.BookDAO">

              <property name="dataSource">

                  <ref local="myDataSource" />

              </property>

          </bean>

          <bean name="txProxyTemplate"

              class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"

              lazy-init="true" abstract="true">

              <property name="transactionManager" ref="transactionManager" />

              <property name="transactionAttributes">

                  <props>

                      <prop key="*">

                          PROPAGATION_REQUIRED

                      </prop>

                  </props>

              </property>

          </bean>

          <bean id="bookService" parent="txProxyTemplate">

              <property name="target">

                  <bean class="com.spring.test.tran.BookService">

                      <property name="bookdao">

                          <ref local="bookDAO" />

                      </property>

                  </bean>

              </property>

          </bean>

       

       

      客戶端調(diào)用BookClient.java

      public static void main(String[] args) {

                      // TODO 自動產(chǎn)生方法 Stub

                      AbstractApplicationContext appContext= new ClassPathXmlApplicationContext("/AppcontextTran.xml");

                      IbookService bookservice=(IbookService)appContext.getBean("bookService");

                      bookservice.saveBook();

                      System.out.println("成功?。。。。。。。。。?/span>");

              }

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多