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

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

棣栧厛瀹氫箟涓涓猣ilter,閫氳繃filter鍙栧緱鍩熷悕,鍥犱負(fù)鎴戜滑鐨勫煙鍚嶄腑甯︽湁鍩庡競(jìng)鐨勬爣蹇?濡傚箍宸炴槸http://gz.***.com,涓婃搗鏄痟ttp://sh.***.com,閫氳繃鍙栧緱鐨勫煙鍚?鎴戜滑鍙栧緱鍩庡競(jìng)鐨勮〃紺烘斁榪汿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,鑾峰彇鍩庡競(jìng)鍚?/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" /> <!-- 榛樿鍩庡競(jìng)涓篻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);
    }
    ..
    
    
//閫氳繃閫傞厤鑰呯殑璁捐妯″紡鍔ㄦ佺殑鍒囨崲瀹炵幇綾?榪欐牱灝卞疄鐜頒簡(jiǎn)鍦―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);
    }
    ...
}

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



]]>
浣跨敤鑷畾涔塧nnotation鎺ュ彛榪涜aspectj鍔ㄦ佺紦瀛?/title><link>http://m.tkk7.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://m.tkk7.com/dongbule/archive/2010/08/23/329627.html</guid><wfw:comment>http://m.tkk7.com/dongbule/comments/329627.html</wfw:comment><comments>http://m.tkk7.com/dongbule/archive/2010/08/23/329627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/dongbule/comments/commentRss/329627.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/dongbule/services/trackbacks/329627.html</trackback:ping><description><![CDATA[<span style="font-size: medium;"><span style="font-size: small;">鐢變簬緋葷粺闇姹傞渶 瑕佸鍚勪釜鎺ュ彛榪涜key-value緙撳瓨(浠ュ弬鏁頒負(fù)key,榪斿洖鐨勫璞′負(fù)value),褰撶劧瀵逛簬榪欑鎯呭喌棣栧厛鑰冭檻鍒扮殑鏄嬌鐢╝op,鍓嶆鏃墮棿鐪嬭繃 aspectj鐨勪竴浜涗粙緇?鍊熸鏈轟細(xì)姝eソ鍔犱互搴旂敤鍜屼綋浼?xì)涓涓?aspectj鏄疉OP鏈鏃╂垚鐔熺殑java瀹炵幇,瀹冪◢寰墿灞曚簡(jiǎn)涓涓媕ava璇█,澧炲姞浜?jiǎn)涓浜? 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鏄粯璁ら厤緗?鏈澶х殑緙撳瓨鏁頒負(fù)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 /> 鏄負(fù)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);">!!!!!!!!!鏈兘鎵ц鏂規(guī)硶緙撳瓨</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 /> 瀵規(guī)湁搴旂敤com.netease.shine.cache.MethodCache榪涜娉ㄨВ鐨勬柟娉曡繘琛屾í鍒囬潰鎷︽埅<br /> @Around("methodCachePointcut()")<br /> 騫跺湪Advice涓鐞嗚繖涓狿ointcut,榪欓噷鐨勭殑Advice浣跨敤鐨勬槸Around(鐜粫閫氱煡)<br /> String cacheKey = getCacheKey(targetName, methodName, arguments);<br /> 鎺ヤ笅鏉ヤ嬌鐢ㄧ被鍨?鏂規(guī)硶鍚?鍙傛暟涓簁ey榪涘叆緙撳瓨澶勭悊<br /> Element element = cache.get(cacheKey);<br /> 褰撶劧濡傛灉鍦╟ache闃熷垪涓彇寰楅潪null瀵硅薄鍒欑洿鎺ヨ繑鍥炶瀵硅薄<br /> MethodCache methodCache = m.getAnnotation(MethodCache.class);<br /> second = methodCache.second();<br /> 鍙栧緱second鐨勫?緙撳瓨鐨勬椂闂?濡傚湪@annotation涓棤閲嶅啓鍙負(fù)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://m.tkk7.com/dongbule/aggbug/329627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/dongbule/" target="_blank">闄堜簬鍠?/a> 2010-08-23 10:35 <a href="http://m.tkk7.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"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://www48646.com" target="_blank">中文字幕精品三区无码亚洲</a>| <a href="http://57gt.com" target="_blank">成人免费一级毛片在线播放视频</a>| <a href="http://www621f.com" target="_blank">亚洲一区二区三区丝袜</a>| <a href="http://yutuzb.com" target="_blank">精品国产亚洲一区二区三区</a>| <a href="http://cg-fun.com" target="_blank">国产做床爱无遮挡免费视频</a>| <a href="http://wwby66636.com" target="_blank">免费阿v网站在线观看g</a>| <a href="http://3t77.com" target="_blank">999久久久免费精品播放</a>| <a href="http://wwwnewhtbook.com" target="_blank">七次郎成人免费线路视频</a>| <a href="http://yy468.com" target="_blank">亚洲欧美日韩综合久久久久</a>| <a href="http://vv848.com" target="_blank">亚洲激情黄色小说</a>| <a href="http://144446.com" target="_blank">亚洲欧洲国产日韩精品</a>| <a href="http://51ykz.com" target="_blank">亚洲中文字幕久久精品无码APP</a>| <a href="http://www44xixi.com" target="_blank">国产做床爱无遮挡免费视频</a>| <a href="http://ywjh666.com" target="_blank">日韩人妻无码免费视频一区二区三区</a>| <a href="http://haohaoshuo.com" target="_blank">91精品成人免费国产片</a>| <a href="http://46339cc.com" target="_blank">无码一区二区三区免费</a>| <a href="http://c7372.com" target="_blank">久久精品免费一区二区三区</a>| <a href="http://by3142.com" target="_blank">精品一区二区三区高清免费观看</a>| <a href="http://zxbj0471.com" target="_blank">特级毛片在线大全免费播放</a>| <a href="http://653349.com" target="_blank">精品亚洲成a人在线观看</a>| <a href="http://7a37.com" target="_blank">亚洲av无码无线在线观看</a>| <a href="http://3fsf.com" target="_blank">亚洲精品久久无码</a>| <a href="http://kt4444.com" target="_blank">亚洲中文字幕无码中文字</a>| <a href="http://wua72.com" target="_blank">亚洲综合校园春色</a>| <a href="http://bjfljg.com" target="_blank">亚洲一区二区三区亚瑟</a>| <a href="http://xmm5pkt.com" target="_blank">亚洲成人黄色在线观看</a>| <a href="http://wwwfafa98.com" target="_blank">亚洲成人免费在线观看</a>| <a href="http://3hc88.com" target="_blank">亚洲国产成人超福利久久精品</a>| <a href="http://bdykdq.com" target="_blank">亚洲国产香蕉碰碰人人</a>| <a href="http://sdtuoliuta.com" target="_blank">亚洲电影中文字幕</a>| <a href="http://8833081.com" target="_blank">综合自拍亚洲综合图不卡区</a>| <a href="http://www-84243.com" target="_blank">亚洲最新视频在线观看</a>| <a href="http://taoduoduo666.com" target="_blank">亚洲精品国产成人专区</a>| <a href="http://a666999.com" target="_blank">久久久久久亚洲AV无码专区</a>| <a href="http://gzbaida.com" target="_blank">亚洲美女免费视频</a>| <a href="http://48eh.com" target="_blank">国产精品亚洲精品</a>| <a href="http://sdsxyz.com" target="_blank">亚洲日本VA午夜在线影院</a>| <a href="http://023npxyy.com" target="_blank">亚洲av乱码一区二区三区按摩</a>| <a href="http://livejimmy.com" target="_blank">亚洲AV一区二区三区四区</a>| <a href="http://tjbdyx.com" target="_blank">男男gvh肉在线观看免费</a>| <a href="http://rushiruhua.com" 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>