Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取spring boot主类包名称_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何获取spring boot主类包名称

Java 如何获取spring boot主类包名称,java,spring,spring-boot,Java,Spring,Spring Boot,我想制作一个spring启动程序,所以我需要获取应用程序主类的包名。 我怎样才能得到它? 有时,您可以使用listener进行spring引导,但它必须在application.properties中进行配置。通过此方法,您可以获得当前类的包 MethodHandles.lookup().lookupClass().getPackage().getName()您可以利用这样一个事实,即主类很可能会被注释为@SpringBootApplication,并在Spring上下文中搜索该类。实施类似于:

我想制作一个spring启动程序,所以我需要获取应用程序主类的包名。 我怎样才能得到它?
有时,您可以使用listener进行spring引导,但它必须在application.properties中进行配置。

通过此方法,您可以获得当前类的包


MethodHandles.lookup().lookupClass().getPackage().getName()

您可以利用这样一个事实,即主类很可能会被注释为
@SpringBootApplication
,并在Spring上下文中搜索该类。实施类似于:

@Service
public class ApplicationFinder {

  @Autowired private ApplicationContext context;

  public String findBootClass() {
    Map<String, Object> candidates = context.getBeansWithAnnotation(SpringBootApplication.class);
    return candidates.isEmpty() ? null : candidates.values().toArray()[0].getClass();
  }
}
@服务
公共类应用程序文件夹{
@自动连线专用应用程序上下文;
公共字符串findBootClass(){
映射候选对象=context.getBeansWithAnnotation(SpringBootApplication.class);
返回候选者.isEmpty()?null:候选者.values().toArray()[0].getClass();
}
}

获得类名后,可以对其进行字符串切片以提取包。

为什么要获取它?对于初学者来说,它通常不太有用,因为我不想扫描一些微分类。为了跳过其他JAR,我需要知道主类并从这里查找类!差异类?比如一些类有注释,或者实现了一个接口…为什么这与您要做的事情有关?你问了一个模糊的问题,没有解释你想做什么。谢谢你的回答!但是我想知道spring boot的主类,我怎样才能得到它?或者搜索所有的罐子,如果不能得到它,甚至不需要那些罐子,因为启动速度很慢。你说的spring boot主类是什么意思?Spring boot项目是一堆JAR,如果您想知道某个类是否加载到了类加载器中,可以使用@ConditionalOnBean或@ConditionalOnMissingBean(classyouwanttoknow.class)。更详细一点,杰,你知道怎么做吗?我也有同样的需要。
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;    
import org.springframework.context.ApplicationContext;

AutoConfigurationPackages.get(context.getAutowireCapableBeanFactory())