私は便利なマイクロサービスと呼ばれる小さなサービスをたくさん持っています;-)、それらはすべて同じスタートアップ動作を持っています。それらはパッケージにまとめられています - パッケージはそれぞれ1つのサービスに対応しています。パッケージの命名は、このようなものです:java getクラスのクラス
com.fooは、ドメイン部分であるcom.foo.bar.Application
は、バーには、実際のサービス名で、アプリケーションは、mainメソッドを持つ私のメインのインスタンスクラスです。
私がやりたかったのは、標準化されたログメッセージが表示されたときに印刷し、ユーザーがサービスに関する情報を得るために照会できるURLを表示することです。定義ごとのサービスのために関する情報を取得するためのURLは次のように構築されなければならない:
IP:PORT/bar/admin/info
私ははgetClass()...などと、このbar.nameを取得しようとしましたが、それは動作しません。だから私はこの試みた:
LOG.info("Access URLs:\n----------------------------------------------------------\n" +
"\tLocal: \t\thttp://127.0.0.1:{}/" + getMyClass() + "/info\n" +
"\tExternal: \thttp://{}:{}/" + getMyClass() + "/info\n----------------------------------------------------------",
env.getProperty("server.port"),
InetAddress.getLocalHost().getHostAddress(),
env.getProperty("server.port")
);
/**
* Get the name of the application class as a static value, so we can show it in the log
*/
public static final Class[] getClassContext() {
return new SecurityManager() {
protected Class[] getClassContext(){return super.getClassContext();}
}.getClassContext();
};
public static final Class getMyClass() { return getClassContext()[2];}
をしかし、あなたは既に推測しているかもしれませんが、これはあまりにも多く出て印刷します。私は取得したいのですが、すべてが
bar
ある
class com.foo.bar.Application
どうすればこれを達成できますか?
ちなみに、私は、Java 8と春ブーツを使用している - それは
敬具、
クリス
こんにちはアーネスト、ありがとう。それはそれを解決しました! – siliconchris