ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>精品一区二区在线视频,欧美人体大胆444www,高清欧美精品xxxxx在线看http://www.aygfsteel.com/sitinspring/category/33626.html真正的成熟,应当是独特个性的形成åQŒçœŸå®žè‡ªæˆ‘的发现åQŒç²¾¼œžä¸Šçš„结果和丰收ã€?/description>zh-cnFri, 14 Nov 2008 12:07:55 GMTFri, 14 Nov 2008 12:07:55 GMT60Struts Tiles ½CÞZ¾‹http://www.aygfsteel.com/sitinspring/archive/2008/11/14/240469.htmlsitinspringsitinspringFri, 14 Nov 2008 02:44:00 GMThttp://www.aygfsteel.com/sitinspring/archive/2008/11/14/240469.htmlhttp://www.aygfsteel.com/sitinspring/comments/240469.htmlhttp://www.aygfsteel.com/sitinspring/archive/2008/11/14/240469.html#Feedback0http://www.aygfsteel.com/sitinspring/comments/commentRss/240469.htmlhttp://www.aygfsteel.com/sitinspring/services/trackbacks/240469.html http://www.aygfsteel.com/Files/sitinspring/StrutsTilesSample20081114103940.rar

截图一åQ?br />

截图二:


]]>
使用模板æ–ÒŽ(gu¨©)³•模式½Ž€åŒ–控制层¾c»ï¼ˆActionåQ‰çš„设计http://www.aygfsteel.com/sitinspring/archive/2008/09/01/226045.htmlsitinspringsitinspringMon, 01 Sep 2008 03:51:00 GMThttp://www.aygfsteel.com/sitinspring/archive/2008/09/01/226045.htmlhttp://www.aygfsteel.com/sitinspring/comments/226045.htmlhttp://www.aygfsteel.com/sitinspring/archive/2008/09/01/226045.html#Feedback8http://www.aygfsteel.com/sitinspring/comments/commentRss/226045.htmlhttp://www.aygfsteel.com/sitinspring/services/trackbacks/226045.html
如果我们使用模板æ–ÒŽ(gu¨©)³•模式åQˆTemplate Method PatternåQ‰å°†ä¸šåŠ¡å¤„ç†å’Œå¼‚å¸¸å¤„ç†åˆ†å¼€åQŒèƒ½æœ‰æ•ˆ½Ž€åŒ–控制层诸类的代码,借用˜q™ç§æ¨¡å¼åQŒæˆ‘们可以把固定的异常处理代码放在基¾cÖM¸­åQŒè€Œè®©å­ç±»æ¥å®žçŽ°å…·ä½“çš„ä¸šåŠ¡åQŒå¦‚果执行业务过½E‹ä¸­å‡ºçŽ°å¼‚å¸¸å¦‚æ•°æ®åº“æ— æ³•˜qžæŽ¥åQŒç”¨æˆäh‰¾ä¸åˆ°½{‰å¼‚常后åQŒç›´æŽ¥å°†å¼‚常抛出让基¾cÀL¥å¤„理åQŒè¿™æ ·åšæˆåŠŸçš„æŠŠä¸šåŠ¡å¤„ç†å’Œå¼‚å¸¸å¤„ç†åˆ†å¼€åˆîCº†å­ç±»å’ŒåŸº¾cÖM¸¤¿Uç±»ä¸­ï¼Œæ¶‰åŠå…·ä½“业务处理的子¾cÖM»£ç å¾—åˆîCº†å¾ˆå¤§çš„简化,更方侉K˜…读,修改和管理ã€?

有点疑惑的是åQŒçŽ°åœ¨è¿˜ä¸ç¡®å®šè¿™æ ·åšä¼šæœ‰ä»€ä¹ˆæ¶ˆæžå°è±¡ï¼Œå¦‚å®‰å…¨æ€§æˆ–¾l“构斚w¢çš„,大家要是觉得有问题请不吝赐教ã€?nbsp; é˜…读全文

]]>
Springçš„ID增长器ä‹É用示例(MySql数据库)http://www.aygfsteel.com/sitinspring/archive/2008/09/01/226040.htmlsitinspringsitinspringMon, 01 Sep 2008 03:30:00 GMThttp://www.aygfsteel.com/sitinspring/archive/2008/09/01/226040.htmlhttp://www.aygfsteel.com/sitinspring/comments/226040.htmlhttp://www.aygfsteel.com/sitinspring/archive/2008/09/01/226040.html#Feedback0http://www.aygfsteel.com/sitinspring/comments/commentRss/226040.htmlhttp://www.aygfsteel.com/sitinspring/services/trackbacks/226040.html
归纳
使用Spring的自增长ID生成器完成以下三步即可:
1åQ‰é…¾|®è‡ªå¢žé•¿id生成器,它需要一个数据源的支持ã€?
2åQ‰æ ¹æ®é…¾|®å°†è‡ªå¢žé•¿id生成器注入DAO各类中ã€?
3åQ‰ä‹É用nextStringValueåQŒnextIntValue,nextLongValueæ–ÒŽ(gu¨©)³•得到IDã€?nbsp; é˜…读全文

]]>
使用Spring提供的MailSender异步发送文本邮ä»?/title><link>http://www.aygfsteel.com/sitinspring/archive/2008/08/08/220880.html</link><dc:creator>sitinspring</dc:creator><author>sitinspring</author><pubDate>Fri, 08 Aug 2008 04:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/sitinspring/archive/2008/08/08/220880.html</guid><wfw:comment>http://www.aygfsteel.com/sitinspring/comments/220880.html</wfw:comment><comments>http://www.aygfsteel.com/sitinspring/archive/2008/08/08/220880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sitinspring/comments/commentRss/220880.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sitinspring/services/trackbacks/220880.html</trackback:ping><description><![CDATA[     摘要: 在工½E‹ä¸­¾lå¸¸æœ‰å‘送邮件的ä»ÕdŠ¡,如果使用JavaMail来发送邮ä»Óž¼Œç”¨åˆ°çš„代码较多,˜q‡ç¨‹å’Œç»†èŠ‚ä¹Ÿç›¸å¯¹å¤æ‚åQŒè€Œä‹É用Springçš„MailSender能相对简单方便些åQŒè¿™æ ·ä‹É½E‹åºå‘˜èƒ½æ›´å¿«æïLš„完成邮äšg发送ä“Q务。下面请看示例代码:   注意在执行代码前åQŒè¯·¼‹®è®¤å·²ç»ž®†activation.jaråQŒcommons-logging-1.0.4.jaråQŒmail.jarå’Œspring.jar载入工程ã€?..  <a href='http://www.aygfsteel.com/sitinspring/archive/2008/08/08/220880.html'>阅读全文</a><img src ="http://www.aygfsteel.com/sitinspring/aggbug/220880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sitinspring/" target="_blank">sitinspring</a> 2008-08-08 12:55 <a href="http://www.aygfsteel.com/sitinspring/archive/2008/08/08/220880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从模板方法模式到反射再到Springçš„IoChttp://www.aygfsteel.com/sitinspring/archive/2008/08/08/220881.htmlsitinspringsitinspringFri, 08 Aug 2008 04:55:00 GMThttp://www.aygfsteel.com/sitinspring/archive/2008/08/08/220881.htmlhttp://www.aygfsteel.com/sitinspring/comments/220881.htmlhttp://www.aygfsteel.com/sitinspring/archive/2008/08/08/220881.html#Feedback0http://www.aygfsteel.com/sitinspring/comments/commentRss/220881.htmlhttp://www.aygfsteel.com/sitinspring/services/trackbacks/220881.html软äšg开发过½E‹ä¸­åQŒå”¯ä¸€ä¸å˜çš„就是变化。这是一句老生常谈åQŒä¹Ÿž®±æ˜¯è¯´èÊY件开发中永恒的主题就是变化。当你把代码都写好了åQŒæµ‹è¯•也完成了,准备交付的时候客户忽然要求你在指定时间做出变化,˜q™ç§æƒ…况在外包行业中很常见;而对一些银行金融项目,边调研边开发边‹¹‹è¯•屡见不鲜åQ›å¯¹äºŽä¸€äº›Web™å¹ç›®åQŒä»Žæ¥å°±åªæœ‰æ°¸è¿œçš„Beta版,æ”ÒŽ(gu¨©)¥æ”¹åŽ»çš„äº‹æ›´æ˜¯å®¶å¸¸ä¾‰K¥­ã€‚对此,½E‹åºå‘˜ä¸€å®šè¦æ±‚清晰的认识åQŒæŠ±æ€¨åªèƒ½æ˜¯å˜´ä¸Šç—›å¿«åQŒä¸è§£å†³å®žé™…问题。真要解军_®žé™…问题,非要动一番脑½{‹ä¸å¯ï¼Œå¦‚果合理使用了设计模式,反射或是Springçš„IoCåQŒä¾¿èƒ½å˜ä¿®æ”¹å™©æ¢¦ä¸ÞZ¸€‹Æ¡æœ‰­‘£çš„æ™ºæ…§ä¹‹æ—…ã€?/p>

 

首先我们看原始要求:客户要求ž®†ä¸€æ‰šw›‡å‘˜åå•存入到CSVå’ŒXML两种文äšg中去åQŒä»¥åŽè¿˜æœ‰å¯èƒ½å¢žåŠ åˆ«çš„æ–‡ä»¶æ ¼å¼ï¼Œæ¯”å¦‚PDFåQŒXLS½{‰ï¼Œè™½ç„¶˜q™æ˜¯ä¸‹ä¸€æœŸçš„内容åQŒä½†˜q™ä¸€æœŸåº”该考虑到变化,客户要求扩展性一定要好ã€?/p>

没问题,有了设计模式响应变化不难。这时我们可以用到模板方法模式:

定义一个操作中的算法的骨架åQŒè€Œå°†ä¸€äº›æ­¥éª¤åšg˜qŸåˆ°å­ç±»ä¸?/strong>ã€?/p>

 

先请看骨架抽象类åQ?/p>

  1. public abstract class FileMaker {
  2.   /**
  3.    * é›‡å‘˜é›†åˆ
  4.    */
  5.   private List<Employee> employees;
  6.   /**
  7.    * ç”Ÿæˆé›‡å‘˜åˆ—表文äšgåQŒå…¬å¼€æŽ¥å£åQŒä¾›å¤–界调用
  8.    * å®šä¹‰æˆfinal是不惌™®©å­ç±»æ”¹å†™åQŒå› ä¸ø™°ƒç”¨çš„æ­¥éª¤åœ¨çˆ¶¾cÖM¸­ž®±å¯ä»¥ç¡®å®šï¼Œå­ç±»åªéœ€å®žçްmakeFile函数
  9.    * @param employees
  10.    * @param fileName
  11.    */
  12.   public final void makeFile(List<Employee> employees,String fileName){
  13.     setEmployees(employees);
  14.     makeFile(fileName);
  15.   }
  16.   
  17.   /**
  18.    * ç”Ÿæˆå…·ä½“的雇员列表文ä»Óž¼Œæ­¤å‡½æ•°ç•™å¾…子¾cÕd®žçŽ?/span>
  19.    * @param fileName
  20.    */
  21.   protected abstract void makeFile(String fileName);  
  22.   
  23.   public final void setEmployees(List<Employee> employees) {
  24.     this.employees = employees;
  25.   }
  26.   public List<Employee> getEmployees() {
  27.     return employees;
  28.   }   
  29. }

很好åQŒå›ºå®šçš„函数和步骤都在抽象基¾cÖM¸­å†™å®šäº†ï¼Œå†çœ‹ä¸¤ä¸ªå…·ä½“实现¾c»ï¼Œå®ƒä»¬è¦å®žçŽ°çš„ž®±æ˜¯makeFile函数而已ã€?/p>

  1. public class CSVFileMaker extends FileMaker{
  2.   protected void makeFile(String fileName){
  3.     try {
  4.           BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
  5.           
  6.           for(Employee emp:getEmployees()){
  7.             String line="";
  8.             line+=emp.getName()+",";
  9.             line+=(emp.isMale()?"ç”?:"å¥?)+",";
  10.             line+=emp.getAge()+",";
  11.             
  12.             out.write(line+"\r\n");
  13.           }
  14.           
  15.           out.close();
  16.       } catch (Exception e) {
  17.         e.printStackTrace();
  18.       }
  19.   }
  20. }
  1. public class XMLFileMaker extends FileMaker{
  2.   protected void makeFile(String fileName){
  3.     try {
  4.       Document document = DocumentHelper.createDocument();
  5.             Element root = document.addElement("employees");
  6.             
  7.             for(Employee emp:getEmployees()){
  8.             Element empElm=root.addElement("employee");
  9.             
  10.             Element nameElm=empElm.addElement("name");
  11.             nameElm.setText(emp.getName());
  12.             
  13.             Element sexElm=empElm.addElement("sex");
  14.             sexElm.setText(emp.isMale()?"ç”?:"å¥?);
  15.             
  16.             Element ageElm=empElm.addElement("age");
  17.             ageElm.setText(String.valueOf(emp.getAge()));
  18.           }
  19.             
  20.             OutputFormat format = OutputFormat.createPrettyPrint();
  21.             format.setEncoding("GBK");    // æŒ‡å®šXML¾~–码        
  22.             XMLWriter writer = new XMLWriter(new FileWriter(fileName),format);
  23.             
  24.             writer.write(document);
  25.             writer.close();
  26.       } catch (Exception e) {
  27.         e.printStackTrace();
  28.       }
  29.   }
  30. }

˜q™æ ·æ˜¨å®Œä»¥åŽæ„Ÿè§‰å¾ˆå¥½åQŒå› ä¸ºæˆ‘们成功的把变化和不变分离开来,不变的部分放在了抽象基类中,而容易变化的部分攑֜¨äº†ä¸¤ä¸ªå…·ä½“的子类中,˜q™æ ·å¦‚果再增加一¿Uæ–°æ–‡äšg格式åQŒä»ŽæŠ½è±¡åŸºç±»å†æ‰©å±•出一个子¾cÕd³å¯ã€‚很好,˜q™æ ·ž®×ƒ¸æ€•变化了。客户对此也没有异议ã€?/p>

 

调用½CÞZ¾‹å¦‚下åQ?/p>

  1. List<Employee> emps=new ArrayList<Employee>();
  2. emps.add(new Employee("Andy",true,21));
  3. emps.add(new Employee("Bill",false,23));
  4. emps.add(new Employee("Cindy",true,25));
  5. emps.add(new Employee("Douglas",false,28));
  6. FileMaker fileMaker=new CSVFileMaker();
  7. fileMaker.makeFile(emps, "1.csv");
  8. fileMaker=new XMLFileMaker();
  9. fileMaker.makeFile(emps, "2.xml");

客户看到了我们的调用的例子,觉得应该更灵‹zÖM¸€äº›ï¼Œä»–说存成各种不同的文件是通过点击按钮来实现的åQŒå¦‚果每个按钮的事äšg处理函数都要生成具体子类岂不是太æ­ÀL¿äº†å—åQŸè¿™æ ·åšæ¯ä¸ªæ–‡äšgä¸‹è²æŒ‰é’®çš„äº‹ä»¶å¤„ç†ä»£ç ä¸æ˜¯éƒ½ä¸ä¸€æ øP¼Ÿ

 

有点道理åQŒå¦‚今理解到˜q™ä¸€å±‚的客户实在是不多见了。不˜q‡å¾ˆå®ÒŽ(gu¨©)˜“满èƒö他的需求,我们可以引入反射的方法:

  1. public static void main(String[] args) {
  2.   List<Employee> emps=new ArrayList<Employee>();
  3.   emps.add(new Employee("Andy",true,21));
  4.   emps.add(new Employee("Bill",false,23));
  5.   emps.add(new Employee("Cindy",true,25));
  6.   emps.add(new Employee("Douglas",false,28));
  7.   
  8.   callByReflect("csv",emps,"1.csv");
  9.   callByReflect("xml",emps,"2.xml");
  10. }
  11. public static void callByReflect(String type,List<Employee> emps,String fileName){
  12.   try{
  13.     Class cls=Class.forName("com.heyang."+type.toUpperCase()+"FileMaker");
  14.     FileMaker fileMaker=(FileMaker)cls.newInstance();
  15.     fileMaker.makeFile(emps, fileName);
  16.   }
  17.   catch(Exception ex){
  18.     ex.printStackTrace();
  19.   }
  20. }

å› äØ“æŒ‰é’®ä¸Šçš„æ–‡å­—å’Œç±»åæ˜¯æœ‰å…³çš„ï¼Œå¦‚ä¸‹è½½CSV的按钮上ž®±æœ‰CSV的文字,˜q™å¯ä»¥é€šè¿‡æ­£åˆ™è¡¨è¾¾å¼å–道,再组合一下不ž®±æ˜¯¾cÕdäº†å—åQ?/span>csv到com.heyang.CSVFileMaker,xml到com.heyang.XMLFileMakeråQŒå…¶å®žå˜åŒ–就是三个字母而已。如果增加按钮,取出按钮中的三个字母再调用callByReflect函数卛_¯åQŒè¿™ä¸ªè¿‡½E‹ç®€ç›´å¯ä»¥å›ºåŒ–ã€?/span>

 

客户看到反射æ–ÒŽ(gu¨©)³•以后很是满意åQŒæ²¡æœ‰æ„è§äº†ã€‚待客户走后åQŒé¡¹ç›®ç»ç†æŠŠä½ æ‹‰åˆîC¸€è¾¹ï¼Œè¯ß_¼š

“你刚才的æ–ÒŽ(gu¨©)³•不错åQŒç¡®å®žå¾ˆå¼ºï¼Œä½†çœ‹å¾—懂反射òq¶èƒ½ç‰|´»æŽŒæ¡çš„ähæ°´åã^要够一òq´ç»éªŒæ‰è¡Œï¼Œ¾l´æŠ¤çš„æ´»è®©ä¸€òq´ç»éªŒçš„人去òq²å¤ªå¯æƒœäº†ï¼Œæœ€å¥½æ”¹æ”¹ï¼Œæœ€å¥½è¾¾åˆ°è®©æ–°æ‰‹ä¹Ÿèƒ½æŽŒæ¡òq¶ä¿®æ”¹çš„½E‹åº¦ã€?#8221;ã€?/span>

 

没办法,领导æ€ÀLœ‰é¢†å¯¼çš„考虑åQŒä»–˜q™ä¹ˆè¯´ä¹Ÿå¾ˆåˆç†ï¼Œæˆæœ¬é—®é¢˜æˆ‘可以不考虑åQŒä½†å¦‚果把程序搞得复杂貌似NBåQŒèƒ½è®©ä¸€äº›å­¦è‰ÞZ¸¾_„¡š„äºÞZñ”生云山雾¾|©çš„æ„Ÿè§‰åQŒæœ‰æ—¶è¿˜èƒ½è¢«äººå°Š¿UîC¸€å£?#8220;大侠”åQŒä½†è°ä¹Ÿä¸æ¯”谁傻多少åQŒè¿™å£°å¤§ä¾ ä¸æ˜¯ç™½å«çš„åQŒä½†æ˜¯å‡ºäº†é—®é¢˜æˆ–æ˜¯æœ‰äº†å˜åŒ–åˆ«äºø™¿˜æ˜¯è¦æ‰¾ä½ åQŒåˆ°å¤´æ¥˜q˜æ˜¯¾l™è‡ªå·±æ·»ä¹±ï¼Œ˜q™äº›éƒ½æ˜¯ä¹‰åŠ¡åŠ›_ЍåQŒä½•苦来呢?˜q˜æ˜¯åº”该改得å®ÒŽ(gu¨©)˜“些,让大安™ƒ½èƒ½ä¿®æ”¹ï¼Œæˆ‘可不愿意半夜三更被人叫èµäh¥é—®é—®é¢˜ã€?/span>

 

用Springçš„IoCž®±å¯ä»¥è§£å†³é—®é¢˜ï¼Œå†™ä¸€ä¸ªæ–°¾cÕdƈ配置到XMLæ–‡äšg中对新手来说问题不大åQŒè¿™ä¸‹å¯ä»¥è®©é¢†å¯¼æ”‘Ö¿ƒäº†ï¼Œè‡ªå·±ž®±æ›´æ”‘Ö¿ƒäº†ã€?/span>

 

IoCæ–ÒŽ(gu¨©)¡ˆä»£ç å¦‚下åQ?/span>

  1. public class Main {
  2.   public static void main(String[] args) {
  3.     List<Employee> emps=new ArrayList<Employee>();
  4.     emps.add(new Employee("Andy",true,21));
  5.     emps.add(new Employee("Bill",false,23));
  6.     emps.add(new Employee("Cindy",true,25));
  7.     emps.add(new Employee("Douglas",false,28));
  8.     
  9.     callByIoc("csv",emps,"1.csv");
  10.     callByIoc("xml",emps,"2.xml");
  11.   }
  12.   
  13.   public static void callByIoc(String type,List<Employee> emps,String fileName){
  14.     try{
  15.       ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
  16.       FileMaker fileMaker=(FileMaker)ctx.getBean(type);
  17.       fileMaker.makeFile(emps, fileName);
  18.     }
  19.     catch(Exception ex){
  20.       ex.printStackTrace();
  21.     }
  22.   }
  23. }

Bean。xmlæ–‡äšg内容很简单吧åQ?/span>

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  3. <beans>
  4. <bean id="csv" class="com.heyang.CSVFileMaker"/>
  5. <bean id="xml" class="com.heyang.XMLFileMaker"/>
  6. </beans> 

好了。到˜q™é‡Œé—®é¢˜ž®±å½»åº•结束了åQŒç»ˆäºŽæ»¡­‘³äº†å®¢æˆ·å’Œä¸Š¾U§çš„要求åQŒå¯ä»¥å›žå®¶ç¡ä¸ªå¥½è§‰äº†åQŒä¸ç”¨æ‹…心别人打搅了ã€?/span>

 

态度改变一切,变化来了人æ€ÀL˜¯è¦å¤šåšä¸€äº›ï¼Œå¿ƒç†å½“然是不愿意的,但抱怨或是消极抵刉™ƒ½ä¸æ˜¯è§£å†³é—®é¢˜ä¹‹é“åQ›å¦‚果把它看做一个挑战的契机åQŒå‡¡äº‹å¤šæ€è€ƒä¸€äº›ï¼Œä¸ä½†èƒ½è§£å†³é—®é¢˜ï¼Œè‡ªå·±ä¹Ÿä¼šæœ‰æ‰€æé«˜åQŒè¿™ž®±æ˜¯¿U¯æžçš„æ€åº¦å¸¦æ¥çš„好处ã€?/span>



]]>
动态代理机制初æŽ?/title><link>http://www.aygfsteel.com/sitinspring/archive/2008/05/28/203359.html</link><dc:creator>sitinspring</dc:creator><author>sitinspring</author><pubDate>Tue, 27 May 2008 16:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/sitinspring/archive/2008/05/28/203359.html</guid><wfw:comment>http://www.aygfsteel.com/sitinspring/comments/203359.html</wfw:comment><comments>http://www.aygfsteel.com/sitinspring/archive/2008/05/28/203359.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sitinspring/comments/commentRss/203359.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sitinspring/services/trackbacks/203359.html</trackback:ping><description><![CDATA[     摘要: Springçš„AOP支持可以被用于从¾pȝ»Ÿæ ¸å¿ƒé€»è¾‘中分¼›ÖMº¤å‰ä¸šåŠ¡ï¼ˆcross-businessåQ‰å¦‚日志åQŒäº‹åŠ¡ç®¡ç†å’Œå®‰å…¨½{‰ï¼Œä½¿ç”¨AOPåQŒä½ å¯ä»¥ç”¨å„¿UåŠŸèƒ½å±‚æ¥è¦†ç›–æ ¸å¿ƒä¸šåŠ¡å±‚åQŒè¿™äº›åŠŸèƒ½å±‚å¯ä»¥ç‰|´»çš„应用到你的¾pȝ»Ÿä¸­ï¼Œç”šè‡³æ ¸å¿ƒä¸šåŠ¡å±‚éƒ½ä¸çŸ¥é“å®ƒä»¬çš„å­˜åœ¨åQŒè¿™æ˜¯ä¸€ä¸ªå¼ºå¤§çš„æ¦‚念ã€?<br>AOPåQˆaspect-oriented programmingåQ‰çš„æ ¸å¿ƒ?y¨­u)®±æ˜¯åŠ¨æ€ä»£ç†ï¼ŒæŽŒæ¡å®ƒå¯¹äºŽç†è§£AOPž®¤äؓ重要åQŒçŠ¹å¦‚åž®„对理解IoC一栗÷€?<br>  <a href='http://www.aygfsteel.com/sitinspring/archive/2008/05/28/203359.html'>阅读全文</a><img src ="http://www.aygfsteel.com/sitinspring/aggbug/203359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sitinspring/" target="_blank">sitinspring</a> 2008-05-28 00:06 <a href="http://www.aygfsteel.com/sitinspring/archive/2008/05/28/203359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Strutsçš„ActionServlet模拟实现http://www.aygfsteel.com/sitinspring/archive/2008/03/29/189385.htmlsitinspringsitinspringFri, 28 Mar 2008 16:31:00 GMThttp://www.aygfsteel.com/sitinspring/archive/2008/03/29/189385.htmlhttp://www.aygfsteel.com/sitinspring/comments/189385.htmlhttp://www.aygfsteel.com/sitinspring/archive/2008/03/29/189385.html#Feedback1http://www.aygfsteel.com/sitinspring/comments/commentRss/189385.htmlhttp://www.aygfsteel.com/sitinspring/services/trackbacks/189385.html阅读全文

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ƽ¶¥É½ÊÐ| ¾Å½­ÊÐ| ¼¨ÏªÏØ| »Æ´óÏÉÇø| ɳÑÅÏØ| èµÉ½ÏØ| ÇØ°²ÏØ| »ÆÆ½ÏØ| ÖÜÄþÏØ| â¿µÏØ| ÁèÔ´ÊÐ| ²¼ÍÏÏØ| Îâ±¤ÏØ| ÂÞµéÏØ| ÐËÎÄÏØ| µ±ÐÛÏØ| ±õÖÝÊÐ| ¼òÑôÊÐ| äųØÏØ| ¹ãººÊÐ| ÄþÔ¶ÏØ| ̨ÖÝÊÐ| ¿ÑÀûÏØ| ¿Ë¶«ÏØ| ¿ËÉ½ÏØ| ¿ª½­ÏØ| ¾äÈÝÊÐ| Âå´¨ÏØ| ºôÂêÏØ| ´ó¶É¿ÚÇø| ÂÞ½­ÏØ| °×ºÓÏØ| ¸§ËÉÏØ| À¶É½ÏØ| À­×ÎÏØ| Î÷³ëÏØ| Û©³ÇÏØ| ¹ó¸ÛÊÐ| ÕѾõÏØ| ¸ÊËàÊ¡| ¼âÔúÏØ|