隨筆-7  評論-0  文章-0  trackbacks-0
            2009年9月11日
            Java的核心API是非常龐大的,這給開發者來說帶來了很大的方便,經常人有評論,java讓程序員變傻。
          但是一些內容我認為是必須掌握的,否則不可以熟練運用java,也不會使用就很難辦了。
          1、java.lang包下的80%以上的類的功能的靈活運用。
          2、java.util包下的80%以上的類的靈活運用,特別是集合類體系、正規表達式、時間、屬性、和Timer. 3、java.io包下的60%以上的類的使用,理解IO體系的基于管道模型的設計思路以及常用IO類的特性和使用場合。
          4、java.math包下的100%的內容。
          5、java.net包下的60%以上的內容,對各個類的功能比較熟悉。
          6、java.text包下的60%以上的內容,特別是各種格式化類。
          7、熟練運用JDBC. 8、java.security包下40%以上的內容,如果對于安全沒有接觸的話根本就不可能掌握java. 9、AWT的基本內容,包括各種組件事件、監聽器、布局管理器、常用組件、打印。
          10、Swing的基本內容,和AWT的要求類似。
          11、XML處理,熟悉SAX、DOM以及JDOM的優缺點并且能夠使用其中的一種完成XML的解析及內容處理
          以上文章摘自——北大青鳥徐州藍海 www.xzbenet.com www.lanh.cn
          posted @ 2009-09-11 15:25 sillyha 閱讀(161) | 評論 (0)編輯 收藏
            2009年7月14日
          鑒于windows操作系統及office辦公平臺,在個人桌面上的壟斷地位,使得excel/word/ppt等文件被廣泛應用。通過java讀 寫excel文檔是編程開發中常見問題,比如在swing和web應用中經常遇到。目前通過Java操作Excel的類庫大致有[1]:
              1、POI,大名鼎鼎的Apache上的項目。
              2、Java Excel API(亦簡稱jexcelapi或jxl),純java的excel開發包。
              3、jexcel,jxl的衍生品,適宜于Swing開發。
              4、jxls,依賴于POI,基于excel模板的可定制化報表輸出工具。
              5、Jacob (Java COM Bridge),顧名思義,是采用橋接方式訪問COM組件及Win32類庫。
              6、其它方式,如數據導出到html格式的表格中,再另存為xls文檔

              使用比較
              POI、jxl、jexcel可以劃歸為一類,通過java封裝了Excel的操作,所以需要折騰Workbook,Sheet,Cell等對象,顧及excel的每個細節。這種方式,優點是功能強大。缺點是代碼冗長拖沓,閱讀困難。
              jxls雖然是基于POI,但其最大突破在于預先定制好Excel模板(如字段、格式、圖表等),運行期綁定數據即可呈現多樣化報表。其優點是編程輕松,功能靈活方便。缺點是對于過于動態化報表不太適用(如輸出字段、格式非常多變)。
              Jacob和COM模型粘在一起,自然被純java的擁躉者所不顧。所以,應用不是很廣。
           

              jxls初體驗

              業務部門經常需要我們技術部給推送一些定期報表,這些報表的字段及格式都是預定義好的。顯而易見,在這種場合,jxls是再適合不過的工具了。只要定義好 輸出報表的模板,綁定查詢出的數據即大功告成。日常維護起來也很方便,比如加減字段、改變展現方式、嵌入excel自動圖表等都能輕松搞定。
              百聞不如一見,從jxls主頁[5]上下載了jXLS v.0.9.6(不知何故,自20080409日后沒有再更新),安裝起來運行其中自帶的范例。自帶范例可以通過maven來編譯,偶試了試編譯成功,但 不知道怎么運行范例。后來沒轍,把范例導到eclipse中進行編譯運行。編譯時下載了最新的poi-3.2-FINAL-20081019.jar,結 果編譯成功,但運行報錯
              java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFCell.setEncoding(S)V
              后來換成poi-3.1-FINAL-20080629.jar,又報別的錯,最后好不容易從CSDN上下載了poi-3.0.1-FINAL- 200705.jar,總算運行成功。體驗了一下,效果非常好。讓人不解的是,在POI主站上只能下載到最新的POI3.2版本,老版本就是找不到。

              參考資料
              1、http://schmidt.devlib.org/java/libraries-excel.html,java操作Excel的類庫清單
              2、http://jakarta.apache.org/poi/,POI主頁
              3、http://www.andykhan.com/jexcelapi/index.html,jxl主頁
              4、http://www.teamdev.com/jexcel/index.jsf,jexcel主頁。
              5、http://jxls.sourceforge.net/,jxls主頁
              6、http://jacob-project.wiki.sourceforge.net/,Jacob主頁

          posted @ 2009-07-14 11:24 sillyha 閱讀(2614) | 評論 (0)編輯 收藏
            2009年6月24日

          1、

          org.springframework.orm.ObjectRetrievalFailureException: Object of class [com.xindeco.myregister.pojo.MyRegisterInfo] with identifier [14]: not found

          MyRegisterInfo在數據庫沒有identifier [14]對象。

          2、

          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.xindeco.myregister.pojo.MyRegisterInfo column: password (should be mapped with insert="false" update="false")

          出錯原因:password 和repassword同時對應數據庫表中的password一列,同時update和insert都設為true。

          xml文件如下:

              <property name="password"

                                    type="java.lang.String"

                                    update="true"

                                    insert="true"

                                    access="property"

                                    column="password"

                                    length = "32"

                                    />

                                   <property name="repassword"

                                    type="java.lang.String"

                                    update="false"

                                    insert="false"

                                    access="property"

                                    column="password"

                                    length = "32"

                                    />

          解決的方法:

          將repassword的insert和update設為false。

          3、

          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed;

          nested exception is org.hibernate.PropertyNotFoundException: Could not find a getter for ID in class

          錯誤原因:hibernate的映射文件中ID是大寫的,而pojo的類中id是小寫的

          注意事項:每個pojo的類都要繼承abstractEntity,其中abstractEntity類有個ID的屬性要重寫

          public abstract class AbstractEntity

              implements Entity, BaseDTO {

              abstract public long getID();

              abstract public void setID(long id);

              public int hashCode() {

                  return (int)this.getID();

              }

              public boolean equals(Object obj) {

                  if (obj == this) {

                      return true;

                  }

                  if (obj instanceof Entity) {

                      return this.getID() == ( (Entity) obj).getID();

                  }

                  return false;

              }

          }

          4、

          org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition

          錯誤原因:

          在application.xml文件中deleteRegister方法以delete開頭,并沒有被設定為可更改的,應如下設置:

          <!--為事物創建代理類,并指定方法的事物類型-->

          <bean id="baseTxProxy" lazy-init="true" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

              <property name="transactionManager">

                <ref bean="transactionManager"/>

              </property>

              <property name="transactionAttributes">

                <props>

                  <prop key="add*">PROPAGATION_REQUIRED</prop>

                  <prop key="cancel*">PROPAGATION_REQUIRED</prop>

                     </props>

              </property>

          </bean>

          加上一行

          <prop key="delete*">PROPAGATION_REQUIRED</prop>

          5、

             ERROR org.apache.struts.util.RequestUtils - Error creating form bean of class com.xindeco.business.web.form.GraAppInfoForm

          public class GraAppInfoForm

          extends ActionForm 錯誤寫成

          public abstratic class GraAppInfoForm

          extends ActionForm

          6、

          2006-04-25 08:56:38,495 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@8e2fb5

          java.lang.ClassCastException: $Proxy0

          at com.xindeco.business.web.action.GraAppAction.newone(GraAppAction.java:30)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

          at java.lang.reflect.Method.invoke(Method.java:585)

          at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)

          at com.xindeco.core.web.action.BaseAction.dispatchMethod(BaseAction.java:153)

          at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)

          actioin類中的newone方法如下:

          public class GraAppAction

              extends BaseAction {

              public ActionForward newone(ActionMapping mapping, ActionForm form,

                                        HttpServletRequest request,

                                        HttpServletResponse response) throws Exception {

                 GraAppService graservice = (GraAppService) this.getBean("GraAppService");

          }

          applicationcontext中的GraAppService的配置如下:

              <bean id="GraAppDAO" class="com.xindeco.business.dao.impl.GraAppDAOImpl">

              <property name="support">

                <ref local="support"/>

              </property>

              <property name="sessionFactory">

                <ref local="sessionFactory"/>

              </property>

          </bean>

          <bean id="GraAppService" parent="baseTxProxy">

              <property name="target">

                <bean class="com.xindeco.business.service.impl.GraAppServiceImpl" autowire="byName">

                  <property name="baseDAO">

                    <ref bean="GraAppDAO"/>

                  </property>

                </bean>

              </property>

          </bean>

          因此this.getBean("GraAppService");是為了得到GraAppServicImpl類的實現。GraAppService是interface

          public class GraAppServiceImpl extends BaseServiceImpl

              implements GraAppService{

          }

          7、org.hibernate.hql.ast.QuerySyntaxException: Demand is not mapped. [from Demand where unitid = ? and needNum > usedNeedNum]

          hibernate.cfg.xml沒有配置Demand.hbm.xml文件的目錄

          8、org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [] in task 'Hibernate operation'; nested exception is java.sql.SQLException: 列名 'id' 無效。

          java.sql.SQLException: 列名 'name' 無效。

          因為hibernate聲明的id,name的columnid屬性沒有與數據庫的字段對應,所以id,name無效。

          9、java.lang.NumberFormatException: null

          at java.lang.Integer.parseInt(Integer.java:415)

          at java.lang.Integer.parseInt(Integer.java:497)

          at com.xindeco.business.service.impl.DemandServiceImpl.findDemandListByUnitId(DemandServiceImpl.java:33)

          錯誤語句為

          needNum = Integer.parseInt(demand.getNeedNum());

          usedNeedNum = Integer.parseInt(demand.getUsedNeedNum());

          因為demand.getUsedNeedNum()==null,無法轉化為string 類型,

          10、rg.apache.jasper.JasperException: /GraAppInfo/GraAppInfoNew.jsp(343,29) According to TLD, tag bean:write must be empty, but is not

          錯誤的原因:

                 <select name="politicsID" >

                       <option value="">請選擇</option>

                 <logic:notEmpty name="politicsList">

                          <logic:iterate id="politics" name="politicsList">

                 </logic:notEmpty>

                 <option value="<bean:write name="politics" property="codeID"/>"><bean:write name="politics" property="codeName"/></option>

                 </logic:iterate>

          </select>

          就因為少了/>

          以后懂得通過查找字數,來檢查錯誤

          11、2006-04-26 13:27:54,812 ERROR com.xindeco.core.util.BeanUtils - bean property [Nation] copy failed

          com.xindeco.core.exception.ConvertException: org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: java.lang.String; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.String

          beanUtil.beanCopy(grapojo,form,BizConstants.CONVERTER);

          要求:

          1、pojo類的屬性只有與form屬性名字相同,才能beancopy成功

          2、pojo中屬性是實體,在form中一定要用int,long表示

          出現這錯誤的原因是pojo中的屬性不是實體,而錯誤寫成:

          string

          private String nation;應改成 private Syscode nation;

          12、

          2006-04-26 14:38:37,843 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@fa1b2d

          java.lang.NullPointerException

          at com.xindeco.business.web.action.GraAppAction.newone(GraAppAction.java:43)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

          hibernate配置文件沒改,程序找不到相應的類

                  <many-to-one

                      name="FSUnit"

                      class="com.xindeco.business.pojo.EmployUnitBaseInfo"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="fSUnit"

                  />

          其實FSUnit對應的類應該是FSUnit

                  <many-to-one

                      name="FSUnit"

                      class="com.xindeco.business.pojo.FSUnit"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="fSUnit"

                  />

          13、

          org.hibernate.MappingException: An association from the table GraAppInfo refers to an unmapped class: com.xindeco.business.pojo.FSUnit

          錯誤原因:hibernate.cfg.xml沒有配置fsunit.hbm.xml文件的位置

          14、

          java.lang.ClassCastException: com.xindeco.business.dao.impl.GraAppDAOImpl

          at com.xindeco.business.service.impl.GraAppServiceImpl.addGraduateApp(GraAppServiceImpl.java:16)

          GraAppServiceImpl.java:16

          第16行: GraAppDAO dao = (GraAppDAO) this.getBaseDAO();//其實得到的是GraAppDAOImpl

          錯誤的原因是

          public class GraAppDAOImpl

              extends BaseDAOImpl {

          }

          沒有實現GraAppDAO接口,正確的做法是

          public class GraAppDAOImpl

              extends BaseDAOImpl implements GraAppDAO {

          }

          先繼承后實現

          15、2006-04-27 08:38:54,078 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@1d6399b

          java.lang.ClassCastException: com.xindeco.business.pojo.SysCode

          at org.hibernate.type.StringType.set(StringType.java:26)

          at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63)

          at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:40)

          一般是因為hibernate聲明類型和pojo類聲明的類型不一樣,并且前面已經出現了Hibernate: insert into TGraAppInfo (name, whereFrom, degree, college, speciality, studentRelTel, remark, higherEduLength, highSchool, studyResume, normalOrNot, proxyUnit, workPost, workPlace, studentAddress, studentPostNumber, nation, appStatus) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

          的操作提示,查出錯誤的原因有:

                  <many-to-one

                      name="demand"

                      class="com.xindeco.business.pojo.Syscode"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="demandID"

                  />

                   <property

                      name="appStatus"

                      type="int"

                      update="true"

                      insert="true"

                      access="property"

                      column="appStatus"

                      length="10"

                  />

          應改為   

                  <many-to-one

                      name="demand"

                      class="com.xindeco.business.pojo.Demand"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="demandID"

                  />

          <many-to-one

                      name="nation"

                      class="com.xindeco.business.pojo.SysCode"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="nation"

                  />

          16、

          org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: com.xindeco.business.pojo.SysCode

          at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:626)

          at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:570)

          at

          org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:482)

          pojo類為:

          public class GraAppInfo{

              private College college;

          }

          action 類為

          public class GraAppAction

              extends BaseAction {

                 public ActionForward add(ActionMapping mapping, ActionForm form,

                                       HttpServletRequest request,

                                       HttpServletResponse response) throws Exception {

                  graInfo.setCollege(new College());\\必須從數據庫找到college這個對象,而不能新生成

                  graInfo.getCollege().setID(graForm.getCollegeID());

                  graInfo.setAppStatus(Integer.parseInt("0"));

                service.addGraduateApp(graInfo);

          }

          public class GraAppServiceImpl extends BaseServiceImpl

              implements GraAppService{

              public boolean addGraduateApp(GraAppInfo info){

                  this.getBaseDAO().save(info);

                  return true;

              }

          }

          dao類save方法為

              getHibernateTemplate().save(obj);

          當cascade="all",插入new college 除了id和原來的記錄一樣,其他的字段全部都被更新,為null

          當cascase=“insert”,插入new college 只會把它的id插入grainfo表中,其他字段不變。

          17、java.sql.SQLException: Unable to convert between java.lang.Integer and BLOB.

          因為

                  <property

                      name="province"

                      type="com.xindeco.business.pojo.SysCode"http://不能用復雜類,

                      update="true"

                      insert="true"

                      access="property"

                      column="provinceId"

                  />

          應該改為

                      <many-to-one

                      name="province"

                      class="com.xindeco.business.pojo.SysCode"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="provinceId"

                  />

          18、javax.servlet.jsp.JspException: Cannot create iterator for this collection

          at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:265)

          jsp文件如下:

             <logic:notEmpty name="graduateList" >

             <logic:iterate id="graduate" name="graduateList" >

             </ogic:notEmpty >

             </ogic:iterat>

          graduateList是一個類,而logic:iterator要求必須是ArrayList,HashSet....這樣的集合類,而graduateList中一個屬性是ArrayList或HashSet的

          應改為:

          <logic:notEmpty name="graduateList" property="items">

          <logic:iterate id="graduate" name="graduateList" property="items" >

          </ogic:notEmpty >

          </ogic:iterat>

          19、2006-05-11 17:13:37,468 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@bc22eb

          org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

          SysUser user= (SysUser) request.getSession().getAttribute(WebConstants.SESSION_USER);

          System.out.println(user.getRole().getRoleName());

          當hibernate session取出數據放到http session時,

          由于sysuser中role的lazy=“true”,所以沒有將RoleName放到http session中,當System.out.println(user.getRole().getRoleName());

          時,雖然http session還開著, hibernat seesion已經關閉

                  <many-to-one

                      name="role"

                      class="com.xindeco.business.pojo.SysRole"

                      lazy="false"

                      cascade="none"

                      outer-join="auto"

                      update="true"

                      insert="true"

                      access="property"

                      column="roleID"

                  />

          20、Association references unmapped class: com.xindeco.workflow.WFNode

          因為application.xml文件中沒有配置<mapping resource="com/xindeco/workflow/WFNode.hbm.xml"/>

          系統找不到WFNode

                   < set

               name = " nodes "

                      table = " WF_ROLENODES "

                      lazy = " true "

                      inverse = " false "

                      cascade = " none "

                      sort = " unsorted "

                   >

          < key column = " roleID " > </ key >               

          < many - to - many

                   class = " com.xindeco.workflow.WFNode "

                   column = " nodeId "

                   outer - join = " auto " />

                   </ set >

          posted @ 2009-06-24 11:25 sillyha| 編輯 收藏
          我們經常用的就是擴展它的接口ApplicationContext.而它的實現又有多種,我們只介紹一些常用的實現。applicationContext.xml文件是位于Src目錄下。
          第一種就是:
          ApplicationContext context = new ClassPathXmlApplicationContext(
                                               "applicationContext.xml");//用這個成功了,不過要在web-inf和src下面同時建立兩個(后來改了,只在src下面建立就可以,見后面,O(∩_∩)O~)
          第二種就是:
          ApplicationContext context = new FileSystemXmlApplicationContext(
                                               "Src/applicationContext.xml ");//src下面建立xml的時候用該方法
          然后DriveCar dc=(DriveCar)ctx.getBean("DriveCar");就可以使用了……
          注意上面兩種加載是的路徑。
          然后在把他們轉換成BeanFactory就可以了。需要用到那個bean就用getBean(“”)取得,可以根據id或name都可以。
          除此之外還有兩種加載的方法:
          第三種方法:
          ClassPathResource resource =
          new ClassPathResource("applicationContext.xml");
          BeanFactory factory = new XmlBeanFactory(resource);
          第四種方法:
          Resource resource =
          new FileSystemResource("Src/applicationContext.xml");
          BeanFactory factory = new XmlBeanFactory(resource);
          同樣要注意上面的路徑的不同。其實classpath相對應的路徑就是Src目錄下,而fileSystem相對的是工程目錄。所以它們路徑是有區別的,加載時也要細心,不然就會報java.io.FileNotFoundException(系統找不到指定的文件)的異常了。


          第三四種方法沒有測試。

          剛又查了spring的ContextLoaderListener,可以再web.xml中<web-app></web-app>之間添加
               <context-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>
                      /WEB-INF/classes/applicationContext*.xml
                  </param-value>
               </context-param>
          </web-app>
          就可以只在src目錄下建立applicationContext.xml了,呵呵
          posted @ 2009-06-24 10:45 sillyha| 編輯 收藏
            2009年6月23日

          今天看到網上有轉載的獲得Spring Bean的方法,覺得值得珍藏,現摘錄在此。

          眾所周知,Spring框架將DI模式發揮到了極至,因此,系統里面用Spring管理的Bean相互之間的獲取是非常

          方便的,只要使用者提供一個setter方法并在配置文件中配置該屬性就可以。

          但是,對于系統中非Spring框架管理的類,如果需要獲取Spring管理的類,或者,程序中需要動態的根據Be

          an的id來獲取Bean實例,不可能事先為該類提供所有需要的Bean屬性的setter方法,在類似這樣的情況下,

          獲取Spring框架管理的類實例的方法有多種,現在簡單總結如下:

          方法一:在初始化時保存ApplicationContext對象
          代碼:
          ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
          ac.getBean("beanId");
          說明:
          這種方式適用于采用Spring框架的獨立應用程序,需要程序通過配置文件手工初始化Spring的情況。


          方法二:通過Spring提供的工具類獲取ApplicationContext對象
          代碼:

          import org.springframework.web.context.support.WebApplicationContextUtils;
          ApplicationContext ac1 =

          WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)
          ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc)
          ac1.getBean("beanId");
          ac2.getBean("beanId");
          說明:
          這種方式適合于采用Spring框架的B/S系統,通過ServletContext對象獲取ApplicationContext對象,然后

          在通過它獲取需要的類實例。
          上面兩個工具方式的區別是,前者在獲取失敗時拋出異常,后者返回null。


          方法三:繼承自抽象類ApplicationObjectSupport
          說明:
          抽象類ApplicationObjectSupport提供getApplicationContext()方法,可以方便的獲取到ApplicationContext。Spring初始化時,會通過該抽象類的setApplicationContext(ApplicationContext context)方法將ApplicationContext 對象注入。

          方法四:繼承自抽象類WebApplicationObjectSupport
          說明:
          類似上面方法,調用getWebApplicationContext()獲取WebApplicationContext

          方法五:實現接口ApplicationContextAware
          說明:
          實現該接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 對象。Spring初始化時,會通過該方法將ApplicationContext 對象注入。

          以上方法適合不同的情況,請根據具體情況選用相應的方法。

          這里值得提一點的是,系統中用到上述方法的類實際上就于Spring框架緊密耦合在一起了,因為這些類是知

          道它們是運行在Spring框架上的,因此,系統中,應該盡量的減少這類應用,使系統盡可能的獨立于當前運

          行環境,盡量通過DI的方式獲取需要的服務提供者。

          方法五比較可行,可以設計一個工具類,專門來獲取Spring中的類。減少對業務代碼的侵入性。

          posted @ 2009-06-23 15:43 sillyha| 編輯 收藏
            2009年6月19日
          http://www.gotapi.com/
          語言:英語
          簡介:HTML,CSS,XPATH,XSL,JAVASCRIPT等API的查詢網站。
          http://www.w3schools.com/
          語言:英語
          簡介:W3C制定的標準諸如XML,HTML,XSL等等的在線學習教程。
          http://www.xml.org.cn/
          語言:中文
          簡介:可以說是XML的中國官方網吧。W3C標準的翻譯組織與XML系列技術交流社區.
          http://www.connectionstrings.com/
          語言:英語
          簡介:這里幾乎收集了所有的數據庫連接字符(connectionstring)了。
          http://www.itpub.net/
          語言:中文
          簡介:我個人認為是國內最專業的綜合性行業性技術類社區.
          http://www.netvtm.com/
          語言:中文
          簡介:內容多翻譯于w3schools.com,少有原創。不過還是應該鼓勵精品翻譯。
          http://www.regexlib.com
          語言:英語
          簡介:正則表達式庫。搜索正則表達式用。
          http://www.rexv.org/
          語言:英語
          簡介:用Ajax開發的在線正則表達式驗證器.
          http://www.koders.com/
          語言:英語
          簡介:代碼搜索引擎,可以搜索幾十種語言的代碼。
          http://www.123aspx.com/Rotor/
          語言:英語
          簡介:.Net Frameworks的源代碼。
          http://dotnet.aspx.cc/
          語言:中文
          簡介:孟憲會的資料站,雖資料大多比較簡單,卻解決了開發中的大部分問題?!
          http://www.dofactory.com/Patterns/Patterns.aspx
          語言:英語
          簡介:23種設計模式的實現參考。特點是UML+精練的示例代碼+簡潔的解說風格。
          http://www.open-open.com/
          語言:中文
          簡介:Java開源大全,如果你用.NET,照著它的名字前加N找找應該都有吧 ?!:)
          http://www.riacn.com/
          語言:中文
          簡介:我認為是國內少有的RIA專業技術站于交流社區.
          http://www.cnpaf.net/
          語言:中文
          簡介:中國協議分析網,很全面的協議資料網。
          http://www.pinvoke.net/
          語言:英語
          簡介:通過.net調用win32等非受控API的資料大全。
          http://bbs.51js.com/
          語言:中文
          簡介:無憂腳本,專業的腳本技術社區。
          http://www.c-sharpcorner.com/
          語言:英語
          簡介:C# Corner,學習c#的好地方.
          http://blog.csdn.net/group/experts/
          語言:中文
          簡介:CSDN專家群,匯集CSDN專家的電子報.
          http://www.codeproject.com/
          語言:英語
          簡介:有很多可學習的示例代碼,特點是豐富,深入淺出.
          http://www.gotdotnet.com/
          語言:英語
          簡介:微軟開發維護的關于.net framework交流社區.
          http://www.sourceforge.net/
          語言:英語
          簡介:全球最大的開源軟體站點
          http://www.asp.net/QuickStart/
          語言:英語
          簡介:Microsoft .NET Framework SDK QuickStart Tutorials
          http://www.matrix.org.cn/
          語言:中文
          簡介:與 Java 共舞,Java優秀的專業社區,文章質量很高.做.Net的朋友也可以從其借鑒很多知識
          posted @ 2009-06-19 23:34 sillyha 閱讀(100) | 評論 (0)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 晋州市| 桐梓县| 青海省| 巴彦淖尔市| 五台县| 清丰县| 射阳县| 台东县| 景东| 东山县| 顺平县| 池州市| 白玉县| 巍山| 稷山县| 林口县| 石渠县| 保康县| 英山县| 平邑县| 防城港市| 南充市| 工布江达县| 天气| 成安县| 南华县| 陕西省| 南陵县| 新绛县| 邵阳市| 伊宁市| 黑水县| 襄汾县| 灵川县| 新巴尔虎左旗| 尼勒克县| 凤冈县| 咸阳市| 兴和县| 安溪县| 南充市|