我需要创建一个可以添加到其他项目中的Jar(我们使用maven),这个Jar必须有一个在启动时调用的类,并且必须记录一些基本信息。我已经习惯使用Singleton Startup和Postconstruct注释来实现这一目的。
到目前为止,我已经用这个类创建了我的Jar,它应该记录JRE版本:
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
@Startup
public class App
{
private final static Logger LOGGER = LoggerFactory.getLogger(App.class);
private AppInfo appInfo;
@PostConstruct
public void init()
{
appInfo = new AppInfo();
String jreVersion = "java not ready";
try {
jreVersion = System.getProperty("java.version");
} catch (final Exception e) {
LOGGER.info("Can't get JRE version");
}
appInfo.setJreVersion(jreVersion);
LOGGER.info("[DiagTest] - The app is running with : " + appInfo.getJreVersion());
}
}
AppInfo()只是一个带有getter / setter的对象。
我的问题是当我在另一个项目中导入我的jar时,似乎没有调用init()方法,我没有收到任何错误或任何日志。
我想我错过了一些显而易见的事情,但在看了多篇文章之后,我没有让它发挥作用。
帮助将不胜感激,
感谢。
编辑:它只使用system.out.print,所以看起来slf4j在启动时无法使用