锘??xml version="1.0" encoding="utf-8" standalone="yes"?>激情懂色av一区av二区av,另类视频一区二区三区,中文在线观看视频http://www.aygfsteel.com/dongbule/category/46022.html鏋勫緩楂樻ц兘闂ㄦ埛緗?/description>zh-cnWed, 13 Oct 2010 03:13:52 GMTWed, 13 Oct 2010 03:13:52 GMT60鍔ㄦ佸垏鎹㈠鏁版嵁婧愮殑閰嶇疆http://www.aygfsteel.com/dongbule/archive/2010/08/23/329682.html闄堜簬鍠?/dc:creator>闄堜簬鍠?/author>Mon, 23 Aug 2010 08:22:00 GMThttp://www.aygfsteel.com/dongbule/archive/2010/08/23/329682.htmlhttp://www.aygfsteel.com/dongbule/comments/329682.htmlhttp://www.aygfsteel.com/dongbule/archive/2010/08/23/329682.html#Feedback1http://www.aygfsteel.com/dongbule/comments/commentRss/329682.htmlhttp://www.aygfsteel.com/dongbule/services/trackbacks/329682.html
鎴戜滑浠ュ墠鍙戝竷鍣ㄧ殑鍋氭硶鏄敤浣滀負鏂規硶鐨勪竴涓弬鏁扮敱璋冪敤鑰呬竴鐩翠紶鍒拌闂璞?绱㈠紩鎴栨暟鎹簱),铏界劧榪欑鍋氭硶涓鏍峰彲浠ュ緢蹇殑瀹炵幇,浣嗘槸灝嗘暟鎹簱,绱㈠紩鐨勯夋嫨鍜屼笟鍔¢昏緫娣鋒惌鍦ㄤ竴璧風殑璁捐鍦ㄦ劅瑙変笂鏄瘮杈冩販涔?騫朵笖涓嶅埄浜庡皢鏉ュ涓煄甯?棰戦亾)鐨勫緩绔?鎵浠ラ変簡閫氳繃ThreadLocal鏉ュ疄鐜板鏁版嵁婧愮殑鍔ㄦ佸垏鎹?

ThreadLocal 鏄竴涓緷璧栦簬鎵ц綰跨▼鐨勫瓨鍌ㄥ櫒錛屽瀹冨氨鍙湁綆鍗曠殑涓涓猻et鍜実et鏂規硶錛屼笉鍚岀嚎紼嬩箣闂存槸鐩鎬簰鐙珛鐨勩傜畝鍗曞湴璁詫紝灝辨槸錛氳繖涓嚎紼媠et浜嗕竴涓璞″叆鍘伙紝鍙湁榪欎釜綰跨▼鑷繁鍙互鎶婂畠get鍑烘潵錛屽叾瀹冪嚎紼嬫槸get涓嶅嚭鏉ョ殑銆?br />
濂戒簡,涓嬮潰鏄叿浣撴樉紺虹殑鏂瑰紡

棣栧厛瀹氫箟涓涓猣ilter,閫氳繃filter鍙栧緱鍩熷悕,鍥犱負鎴戜滑鐨勫煙鍚嶄腑甯︽湁鍩庡競鐨勬爣蹇?濡傚箍宸炴槸http://gz.***.com,涓婃搗鏄痟ttp://sh.***.com,閫氳繃鍙栧緱鐨勫煙鍚?鎴戜滑鍙栧緱鍩庡競鐨勮〃紺烘斁榪汿hreadLocal.set(city);

public class DataSourceFilter extends HttpServlet implements Filter {

public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain filterChain) {
      HttpServletRequest req 
= (HttpServletRequest) request;
      String servername 
= req.getServerName();
      SpObserver.putCityByDomain(servername);
      filterChain.doFilter(request, response);
  }

}

public class SpObserver {
    
private static ThreadLocal<String> local = new ThreadLocal<String>();    

    
public static void putCityByDomain(String domain) {
        String city 
= publicconfig.getCityMap().get(domain);//鎷嗗垎domain,鑾峰彇鍩庡競鍚?/span>
        local.set(city);
    }
    
public static String getCity() {
        String city 
= (String) local.get();
        
return city;
    }

}

寤虹珛澶氫釜涓庝箣瀵瑰簲鐨勬暟鎹簮


    
<bean id="atomDataSource_gz"
        class
="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init"
        destroy-method
="close">
        
<property name="uniqueResourceName">
            
<value>mysql/gz</value>
        
</property>
        
<property name="xaDataSourceClassName">
            
<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>
        
</property>
        
<property name="xaProperties">
            
<props>
                
<prop key="URL"><![CDATA[${jdbc_gz.url}]]></prop>
                
<prop key="user"><![CDATA[${jdbc_gz.username}]]></prop>
                
<prop key="password"><![CDATA[${jdbc_gz.password}]]></prop>
            
</props>
        
</property>
        
<property name="maxPoolSize">
            
<value>50</value>
        
</property>
        
<property name="minPoolSize">
            
<value>5</value>
        
</property>
        
<property name="loginTimeout">
            
<value>20</value>
        
</property>
        
<property name="testQuery">
            
<value>SELECT 1</value>
        
</property>
    
</bean>

<bean id="atomDataSource_sh"
        class
="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init"
        destroy-method
="close">
        
<property name="uniqueResourceName">
            
<value>mysql/sh</value>
        
</property>
        
<property name="xaDataSourceClassName">
            
<value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value>
        
</property>
        
<property name="xaProperties">
            
<props>
                
<prop key="URL"><![CDATA[${jdbc_sh.url}]]></prop>
                
<prop key="user"><![CDATA[${jdbc_sh.username}]]></prop>
                
<prop key="password"><![CDATA[${jdbc_sh.password}]]></prop>
            
</props>
        
</property>
        
<property name="maxPoolSize">
            
<value>50</value>
        
</property>
        
<property name="minPoolSize">
            
<value>5</value>
        
</property>
        
<property name="loginTimeout">
            
<value>20</value>
        
</property>
        
<property name="testQuery">
            
<value>SELECT 1</value>
        
</property>
    
</bean>

    
<bean id="dataSource" class="com.***.shine.constant.MultiDataSource">  
        
<property name="dataSource" ref="atomDataSource_gz" /> <!-- 榛樿鍩庡競涓篻z -->
    
</bean>


public class MultiDataSource extends AtomikosDataSourceBean implements ApplicationContextAware {
    
private ApplicationContext applicationContext = null;
    
private DataSource dataSource = null;
    
public Connection getConnection() throws SQLException {
        
return getDataSource().getConnection();
    }
    
public Connection getConnection(String arg0, String arg1)
            
throws SQLException {
        
return getDataSource().getConnection(arg0, arg1);
    }
    ..
    
    
//閫氳繃閫傞厤鑰呯殑璁捐妯″紡鍔ㄦ佺殑鍒囨崲瀹炵幇綾?榪欐牱灝卞疄鐜頒簡鍦―ataSourceBean涓?鎴戜滑鏄娉ㄥ叆atomDataSource_gz榪樻槸atomDataSource_sh
    public DataSource getDataSource(String dataSourceName) {
        
try{
            
if(dataSourceName==null||dataSourceName.equals("")){
                
return this.dataSource;
            }
            
return (DataSource)this.applicationContext.getBean(dataSourceName);
        }
catch(NoSuchBeanDefinitionException ex){
            
throw new DaoException("There is not the dataSource <name:"+dataSourceName+"> in the applicationContext!");
        }
    }
    
    
public void setDataSource(DataSource dataSource) {
        
this.dataSource = dataSource;
    }
    
//涓昏鏄笅闈㈣繖涓孌?閫氳繃SpObserver.getCity() 鑾峰彇鐩稿簲鐨勫煄甯?棰戦亾)鍚嶅瓧
    public DataSource getDataSource(){
        String city 
= SpObserver.getCity();
        
if(city == null || city.equals(""|| city.equals("null"))
            city 
= "gz";
        
return getDataSource("atomDataSource_"+city);
    }
    ...
}

榪欐牱鍦ㄥ悇涓眰涓殑瀹炵幇鎴戜滑灝變笉闇鍘誨叧娉ㄧ┒绔熸槸鍝釜鍩庡競鐨勬帴鍙?鍥犱負姣忎釜璇鋒眰閮介檮甯︿簡ThreadLocal鐨勭浉搴斾俊鎭?br />
鍏充簬ThreadLocal鍏蜂綋鍙湅-->閫氶氶忛忕悊瑙hreadLocal



]]>
浣跨敤鑷畾涔塧nnotation鎺ュ彛榪涜aspectj鍔ㄦ佺紦瀛?/title><link>http://www.aygfsteel.com/dongbule/archive/2010/08/23/329627.html</link><dc:creator>闄堜簬鍠?/dc:creator><author>闄堜簬鍠?/author><pubDate>Mon, 23 Aug 2010 02:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/dongbule/archive/2010/08/23/329627.html</guid><wfw:comment>http://www.aygfsteel.com/dongbule/comments/329627.html</wfw:comment><comments>http://www.aygfsteel.com/dongbule/archive/2010/08/23/329627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dongbule/comments/commentRss/329627.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dongbule/services/trackbacks/329627.html</trackback:ping><description><![CDATA[<span style="font-size: medium;"><span style="font-size: small;">鐢變簬緋葷粺闇姹傞渶 瑕佸鍚勪釜鎺ュ彛榪涜key-value緙撳瓨(浠ュ弬鏁頒負key,榪斿洖鐨勫璞′負value),褰撶劧瀵逛簬榪欑鎯呭喌棣栧厛鑰冭檻鍒扮殑鏄嬌鐢╝op,鍓嶆鏃墮棿鐪嬭繃 aspectj鐨勪竴浜涗粙緇?鍊熸鏈轟細姝eソ鍔犱互搴旂敤鍜屼綋浼氫竴涓?aspectj鏄疉OP鏈鏃╂垚鐔熺殑java瀹炵幇,瀹冪◢寰墿灞曚簡涓涓媕ava璇█,澧炲姞浜嗕竴浜? keyword絳?鍏蜂綋鐨刟spectj鐨勫熀鏈娉曡[ur=http://today.java.net/pub/a/today/2003/12 /26/ch3AspectJSyntaxBasics.html]榪欓噷[/url],榪涜緙撳瓨鐨勬鏋朵嬌鐢ㄨ緝鎴愮啛鐨別hcache.</span><br /> 涓嬮潰寮濮嬭繘琛岄厤緗?br /> 棣栧厛鏄痚hcache鐨勯厤緗枃浠?br /> <br /> </span> <div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 255);"><?</span><span style="color: rgb(255, 0, 255);">xml version="1.0" encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?></span><span style="color: rgb(0, 0, 0);">  <br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ehcache</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">diskStore </span><span style="color: rgb(255, 0, 0);">path</span><span style="color: rgb(0, 0, 255);">="/home/workspace/gzshine/trunk/ehcache"</span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cache </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="DEFAULT_CACHE"</span><span style="color: rgb(255, 0, 0);">  <br />          maxElementsInMemory</span><span style="color: rgb(0, 0, 255);">="10000"</span><span style="color: rgb(255, 0, 0);">  <br />          eternal</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);">  <br />          timeToIdleSeconds</span><span style="color: rgb(0, 0, 255);">="3600"</span><span style="color: rgb(255, 0, 0);">  <br />          timeToLiveSeconds</span><span style="color: rgb(0, 0, 255);">="3600"</span><span style="color: rgb(255, 0, 0);">  <br />          overflowToDisk</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);">  <br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">ehcache</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br /> </span></div> <br /> <span style="font-size: small;">榪欎釜鐨凞EFAULT_CACHE鏄粯璁ら厤緗?鏈澶х殑緙撳瓨鏁頒負10000,鏃墮棿涓轟竴涓皬鏃?br /> <br /> 鎺ヤ笅鏉ョ殑鏄痵pring涓嬬殑閰嶇疆<br /> <br /> </span> <div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 255);"><?</span><span style="color: rgb(255, 0, 255);">xml version="1.0" encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?></span><span style="color: rgb(0, 0, 0);">  <br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">beans </span><span style="color: rgb(255, 0, 0);">xmlns</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/beans"</span><span style="color: rgb(255, 0, 0);">  <br />      xmlns:xsi</span><span style="color: rgb(0, 0, 255);">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: rgb(255, 0, 0);">  <br />      xmlns:aop</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/aop"</span><span style="color: rgb(255, 0, 0);">  <br />      xmlns:tx</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/tx"</span><span style="color: rgb(255, 0, 0);">  <br />      xmlns:context</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/context"</span><span style="color: rgb(255, 0, 0);">  <br />      xsi:schemaLocation</span><span style="color: rgb(0, 0, 255);">="  <br />         http://www.springframework.org/schema/beans  <br />         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  <br />         http://www.springframework.org/schema/tx  <br />         http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  <br />         http://www.springframework.org/schema/aop  <br />         http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  <br />         http://www.springframework.org/schema/context  <br />         http://www.springframework.org/schema/context/spring-context-2.5.xsd"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />    <br /> </span><span style="color: rgb(0, 128, 0);"><!--</span><span style="color: rgb(0, 128, 0);"> ##############  aspectj 4 ehcache   ############# </span><span style="color: rgb(0, 128, 0);">--></span><span style="color: rgb(0, 0, 0);">  <br />        <br />      </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">aop:aspectj-autoproxy </span><span style="color: rgb(255, 0, 0);">proxy-target-class</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id </span><span style="color: rgb(0, 0, 255);">= "methodCacheAspectJ"</span><span style="color: rgb(255, 0, 0);"> class</span><span style="color: rgb(0, 0, 255);">="com.***.shine.aspectj.MethodCacheAspectJ"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="cache"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />              </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ref </span><span style="color: rgb(255, 0, 0);">local</span><span style="color: rgb(0, 0, 255);">="methodCache"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />        <br />      </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="cacheManager"</span><span style="color: rgb(255, 0, 0);">  <br />          class</span><span style="color: rgb(0, 0, 255);">="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="configLocation"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />              </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">classpath:ehcache.xml</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />        <br />      </span><span style="color: rgb(0, 128, 0);"><!--</span><span style="color: rgb(0, 128, 0);"> 瀹氫箟ehCache鐨勫伐鍘傦紝騫惰緗墍浣跨敤鐨凜ache name </span><span style="color: rgb(0, 128, 0);">--></span><span style="color: rgb(0, 0, 0);">  <br />        <br />      </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="methodCache"</span><span style="color: rgb(255, 0, 0);">  <br />          class</span><span style="color: rgb(0, 0, 255);">="org.springframework.cache.ehcache.EhCacheFactoryBean"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="cacheManager"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />              </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ref </span><span style="color: rgb(255, 0, 0);">local</span><span style="color: rgb(0, 0, 255);">="cacheManager"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="cacheName"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />              </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">DEFAULT_CACHE</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />          </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">  <br /> </span></div> <br /> <span style="font-size: small;"><aop:aspectj-autoproxy proxy-target-class="true"/><br /> 鏄負aspectj鍦ㄦ墍鏈塩lass涓嬪紑鍚嚜鍔ㄥ姩鎬佷唬鐞?br /> <bean id="cacheManager">鎸囧畾鍒氬垰鐨別hcache閰嶇疆鏂囦歡</span><br /> <br /> 鎺ヤ笅鏉ョ紪鍐欎竴涓嚜瀹氫箟鐨刟nnotation<br /> <br /> <div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> com.</span><span style="color: rgb(0, 0, 0);">***</span><span style="color: rgb(0, 0, 0);">.shine.cache;  <br />    <br />  </span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.annotation.Documented;  <br />  </span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.annotation.ElementType;  <br />  </span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.annotation.Retention;  <br />  </span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.annotation.RetentionPolicy;  <br />  </span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.annotation.Target;  <br />    <br />  @Target({ElementType.METHOD,ElementType.TYPE})  <br />  @Retention(RetentionPolicy.RUNTIME)  <br />  @Documented  <br />  </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> @</span><span style="color: rgb(0, 0, 255);">interface</span><span style="color: rgb(0, 0, 0);"> MethodCache {  <br />      </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> second() </span><span style="color: rgb(0, 0, 255);">default</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;   <br />  }  <br /> </span></div> <br /> <span style="font-size: small;"><bean id = "methodCacheAspectJ">鏄竴涓猘spectj榪涜Pointcuts鍜孉dvice鐨勭被闇娉ㄥ叆methodCache<br /> <br /> </span> <div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> com.</span><span style="color: rgb(0, 0, 0);">***</span><span style="color: rgb(0, 0, 0);">.shine.aspectj;  <br />    <br />  @Aspect  <br />  </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> MethodCacheAspectJ {  <br />      Log logger </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> LogFactory.getLog(MethodCacheAspectJ.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">);  <br />        <br />      </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> Cache cache;  <br />        <br />      </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"> <br />       * 璁劇疆緙撳瓨鍚?nbsp;<br />       </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);">  <br />      </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> setCache(Cache cache) {  <br />          </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.cache </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> cache;  <br />      }   <br />        <br />      @Pointcut(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">@annotation(com.***.shine.cache.MethodCache)</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)  <br />      </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> methodCachePointcut(){    <br />      }  <br />        <br />      @Around(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">methodCachePointcut()</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)  <br />      </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> Object methodCacheHold(ProceedingJoinPoint joinPoint) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Throwable{  <br />          String targetName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> joinPoint.getTarget().getClass().getName();  <br />          String methodName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> joinPoint.getSignature().getName();  <br />          Object[] arguments </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> joinPoint.getArgs();  <br />          Object result </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;  <br />          String cacheKey </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> getCacheKey(targetName, methodName, arguments);  <br />          Element element </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> cache.get(cacheKey);  <br />          </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (element </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">) {  <br />              </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);">{  <br />                  result </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> joinPoint.proceed();  <br />              }</span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">(Exception e){  <br />                  logger.info(e);  <br />              }  <br />              </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(result</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">){  <br />                  </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);">{  <br />                      element </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Element(cacheKey, (Serializable) result);  <br />                      Class targetClass </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Class.forName(targetName);  <br />                      Method[] method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> targetClass.getMethods();  <br />                      </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> second </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;  <br />                      </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(Method m:method){  <br />                          </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (m.getName().equals(methodName)) {  <br />                              Class[] tmpCs </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> m.getParameterTypes();  <br />                              </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(tmpCs.length</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">arguments.length){  <br />                                  MethodCache methodCache </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> m.getAnnotation(MethodCache.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">);  <br />                                  second </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> methodCache.second();  <br />                                  </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;  <br />                              }  <br />                          }  <br />                      }  <br />                      </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(second</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">){ </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> annotation娌℃湁璁緎econd鍊煎垯浣跨敤ehcache.xml涓嚜瀹氫箟鍊?nbsp; </span><span style="color: rgb(0, 128, 0);"><br /> </span><span style="color: rgb(0, 0, 0);">                         element.setTimeToIdle(second);  <br />                          element.setTimeToLive(second);  <br />                      }  <br />                      cache.put(element);  <br />                  }</span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">(Exception e){  <br />                      logger.info(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">!!!!!!!!!</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">cacheKey</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">!!!!!!!!!鏈兘鎵ц鏂規硶緙撳瓨</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">e);  <br />                  }  <br />              }  <br />          }  <br />          </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> element.getValue();  <br />      }  <br />    <br />       </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> String getCacheKey(String targetName, String methodName,  <br />              Object[] arguments) {  <br />          StringBuffer sb </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> StringBuffer();  <br />          sb.append(targetName).append(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).append(methodName);  <br />          </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> ((arguments </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 0);">&&</span><span style="color: rgb(0, 0, 0);"> (arguments.length </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">)) {  <br />              </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; i </span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);"> arguments.length; i</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {  <br />                  </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (arguments[i] </span><span style="color: rgb(0, 0, 255);">instanceof</span><span style="color: rgb(0, 0, 0);"> Date) {  <br />                      sb.append(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).append(  <br />                              DateUtil.datetoString((Date) arguments[i]));  <br />                  } </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> {  <br />                      sb.append(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).append(arguments[i]);  <br />                  }  <br />              }  <br />          }  <br />          </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> sb.toString();  <br />      }  <br />  }  <br /> </span></div> <br /> <br /> <span style="font-size: small;">@Pointcut("@annotation(com.netease.shine.cache.MethodCache)")<br /> 瀵規湁搴旂敤com.netease.shine.cache.MethodCache榪涜娉ㄨВ鐨勬柟娉曡繘琛屾í鍒囬潰鎷︽埅<br /> @Around("methodCachePointcut()")<br /> 騫跺湪Advice涓鐞嗚繖涓狿ointcut,榪欓噷鐨勭殑Advice浣跨敤鐨勬槸Around(鐜粫閫氱煡)<br /> String cacheKey = getCacheKey(targetName, methodName, arguments);<br /> 鎺ヤ笅鏉ヤ嬌鐢ㄧ被鍨?鏂規硶鍚?鍙傛暟涓簁ey榪涘叆緙撳瓨澶勭悊<br /> Element element = cache.get(cacheKey);<br /> 褰撶劧濡傛灉鍦╟ache闃熷垪涓彇寰楅潪null瀵硅薄鍒欑洿鎺ヨ繑鍥炶瀵硅薄<br /> MethodCache methodCache = m.getAnnotation(MethodCache.class);<br /> second = methodCache.second();<br /> 鍙栧緱second鐨勫?緙撳瓨鐨勬椂闂?濡傚湪@annotation涓棤閲嶅啓鍙負int second() default 0)<br /> element.setTimeToIdle(second);<br /> element.setTimeToLive(second);<br /> 濡傛灉闈為浂鍒欓噸鏂拌緗紦瀛樻椂闂?br /> <br /> </span> <div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 0);">@MethodCache(second</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">300</span><span style="color: rgb(0, 0, 0);">)  <br /> </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> List</span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">Sort</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);"> getSort(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> type,</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> parentid){  <br />      System.out.println(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">!!!!!!!!!!!!!娌$紦瀛樺埌</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);  <br />      Row row </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Row();  <br />      row.put(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">type</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, type);  <br />      row.put(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">parentid</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, parentid);  <br />      </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> (List</span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">Sort</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">)gz_Template.queryForList(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">sort.getSort</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, row);  <br />  }  <br /> </span></div> <br /> <br /> ----------------------------------------<br /> <br /> 闄堜簬鍠?<br /> Mail: chenyz@corp.netease.com <br /> <br /> <img src ="http://www.aygfsteel.com/dongbule/aggbug/329627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dongbule/" target="_blank">闄堜簬鍠?/a> 2010-08-23 10:35 <a href="http://www.aygfsteel.com/dongbule/archive/2010/08/23/329627.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> 主站蜘蛛池模板: <a href="http://" target="_blank">罗平县</a>| <a href="http://" target="_blank">古田县</a>| <a href="http://" target="_blank">深圳市</a>| <a href="http://" target="_blank">澄迈县</a>| <a href="http://" target="_blank">清原</a>| <a href="http://" target="_blank">扎兰屯市</a>| <a href="http://" target="_blank">怀远县</a>| <a href="http://" target="_blank">大同县</a>| <a href="http://" target="_blank">康乐县</a>| <a href="http://" target="_blank">天峨县</a>| <a href="http://" target="_blank">通江县</a>| <a href="http://" target="_blank">清流县</a>| <a href="http://" target="_blank">北京市</a>| <a href="http://" target="_blank">通城县</a>| <a href="http://" target="_blank">鹿泉市</a>| <a href="http://" target="_blank">上犹县</a>| <a href="http://" target="_blank">且末县</a>| <a href="http://" target="_blank">来安县</a>| <a href="http://" target="_blank">遵义县</a>| <a href="http://" target="_blank">东乡族自治县</a>| <a href="http://" target="_blank">榆林市</a>| <a href="http://" target="_blank">安平县</a>| <a href="http://" target="_blank">泉州市</a>| <a href="http://" target="_blank">连州市</a>| <a href="http://" target="_blank">蓬安县</a>| <a href="http://" target="_blank">勐海县</a>| <a href="http://" target="_blank">瑞丽市</a>| <a href="http://" target="_blank">芷江</a>| <a href="http://" target="_blank">潢川县</a>| <a href="http://" target="_blank">舞阳县</a>| <a href="http://" target="_blank">应城市</a>| <a href="http://" target="_blank">永修县</a>| <a href="http://" target="_blank">南丹县</a>| <a href="http://" target="_blank">郓城县</a>| <a href="http://" target="_blank">泉州市</a>| <a href="http://" target="_blank">饶阳县</a>| <a href="http://" target="_blank">盐津县</a>| <a href="http://" target="_blank">惠东县</a>| <a href="http://" target="_blank">赤峰市</a>| <a href="http://" target="_blank">云安县</a>| <a href="http://" target="_blank">阿拉善右旗</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>