2012-03-13 9 views
2

こんにちは私のプロジェクトを難読化するためにyguard antタスクを使用していますが、これはJavaクラスの名前を変更すること、そして対応するbeanをspring xmlファイルに置き換えます。 Javaで名前が変更され、春の注入でプロパティ名が一致しません..私は続行することができません。セッターとゲッターを混乱させないようにする方法を教えてもらえますか?Springゲッターとセッターを管理する方法yguardの難読化

答えて

2

YGuardはこの部分ではあまりよくありませんが、なぜProGaurdを試してみませんか?

あなたが言うProGaurd例セクション( http://proguard.sourceforge.net/index.html#manual/examples.html)を参照することができ

処理Beanクラス

アプリケーション、アプレット、サーブレット、図書館などは、Beanのイントロスペクションを多用した場合 Beanエディタクラス、またはgetterメソッドとsetterメソッドを見つけるためにクラスを作成すると、設定が苦しくなる可能性があります。 Beanのクラス名やゲッター名やセッター名が変更されていないことを確認する以外にできることは他にありません。例:

-keep public class mypackage.MyBean { 
    public void setMyProperty(int); 
    public int getMyProperty(); 
} 

-keep public class mypackage.MyBeanEditor 

明示的にリストする要素が多すぎる場合は、クラス名とメソッドシグネチャのワイルドカードを使用すると便利です。この例では、パッケージmybeansのクラス内のすべての可能なセッターとゲッターを含むべきである:

-keep class mybeans.** { 
    void set*(***); 
    void set*(int, ***); 

    boolean is*(); 
    boolean is*(int); 

    *** get*(); 
    *** get*(int); 
} 

「***」ワイルドカードは、任意のタイプ(プリミティブまたは非プリミティブ配列または非アレイ)と一致します。 'int'引数を持つメソッドは、リストであるプロパティと一致します。

、あなたはまた、アプリケーションでのアノテーションを使用する場合:

処理リソースインジェクション

アプリケーションは、Java EEスタイルのリソースインジェクションを使用している場合は、アプリケーションコンテナが自動的にリソースのインスタンスを割り当てます@Resourceで注釈が付けられたフィールドやメソッドにクラスを追加します。コンテナはイントロスペクションを適用し、プライベートクラスメンバーに直接アクセスすることさえできます。通常、タイプ名とクラスメンバー名に基づいてリソース名を作成します。

-keepclassmembers class * { 
    @org.springframework.beans.factory.annotation.Autowired *; 
} 

-keepclassmembers class * { 
    @javax.annotation.Resource *; 
} 

Springフレームワークが@Autowired他の同様の注釈があります。私たちは、そのようなクラスのメンバーが削除または名前変更されていることを避けるために持っています

関連する問題