我正在开发一个数据访问库,并希望能够以最少的配置将其作为依赖项包含在其他项目中(理想情况下只是自动连接存储库)。特别是,这个库使用自动配置类(在spring.factory
中启用)进行设置,并且需要禁用其他自动配置类才能工作(DataSourceAutoConfiguration
和HibernateJpaAutoConfiguration
)。
是否可以在从属项目之外执行此操作?
为了使配置尽可能简单,我希望避免将排除项放在依赖项目的@SpringBootApplication
注释或其spring.autoconfigure.exclude
属性中。
更新:
在我的@Configuration上,我尝试添加注释:
@EnableAutoConfiguration(exclude={
DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class})
这导致了
IllegalState异常:配置问题:检测到循环@导入
和
@ImportAutoConfiguration(exclude={
DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class})
这根本什么也没做。
你可以排除然后通过
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,Hibernate JpaAutoConfiguration.class})
但是,您可以通过添加@EnableAutoCon人和配置(排除={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
在@配置
中排除它们。
有一个非常方便的界面,称为AutoConfiguration的
,它决定应该加载哪个自动配置。这也是@
在库中,添加以下类:
public class MyExclusionFilter
implements AutoConfigurationImportFilter {
private static final Set<String> SHOULD_SKIP = new HashSet<>(
Arrays.asList("org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration",
"org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration"));
@Override
public boolean[] match(String[] classNames, AutoConfigurationMetadata metadata) {
boolean[] matches = new boolean[classNames.length];
for(int i = 0; i< classNames.length; i++) {
matches[i] = !SHOULD_SKIP.contains(classNames[i]);
}
return matches;
}
}
这个类需要在<code>spring中注册。工厂
开始工作。将库中的以下行添加到META-INF/spring.factors
中:
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=com.mycompany.db.MyExclusionFilter
您不需要对依赖项目进行任何更改。只需将库添加为依赖项,您指定的自动配置将不会为整个应用程序加载。
注意:您可以添加多个导入筛选器,只有未在所有导入筛选器中筛选的自动配置类才会被加载。
有关详细信息,请参阅org.springframework.boot.autoconfigure的源代码。AutoConfigurationImportSelector#过滤器
和org.springframework.boot.autoconfigure.codition.OnClassCondition。java
类。
4.1 根据条件的自动配置 @conditional是基于条件的自动配置,一般配合Condition接口一起使用,只有接口实现类返回true,才装配,否则不装配. 用实现了Condition接口的类传入@Conditional中 @Conditional可以标记在配置类的方法中,也可以标记在配置类上.标记的位置不同,作用域不同. @Conditional可以传入多个实现了condition接口的类
我刚开始使用Java,到处搜索,但无论出于何种原因都无法找到解决方案。我的问题对我来说似乎很简单:我在同一个文件夹中有两个类,该文件夹是我的包,为了说明: 我需要在第2类中创建第1类的实例,但它就是不起作用。这是一个示例: 文件路径: 文件路径: 我得到这个错误 根据要求,完整的源代码:注:class1=ClientIndividual,class2=涉众 第一个文件 第二个文件 第三个文件(接口
“在Meta-INF/Spring.Factories中找不到自动配置类” 最小示例: 使用SpringInitializr(https://start.spring.io),在几秒钟内就可以创建一个迷你应用程序来复制这个问题。使用的SpringInitializr标记是:“web”和“vaadin”。 运行应用程序时使用 您将得到以下错误消息: “在Meta-INF/Spring.Factori
本文向大家介绍浅谈springboot自动配置原理,包括了浅谈springboot自动配置原理的使用技巧和注意事项,需要的朋友参考一下 从main函数说起 一切的开始要从SpringbootApplication注解说起。 其中最重要的就是EnableAutoConfiguration注解,开启自动配置。 通过Import注解导入AutoConfigurationImportSelector。在这
我们有一个基本的JPA存储库类,其中有一些我们在项目中使用的附加实用程序方法。在Spring Data JPA留档之后,我们创建了这个类,并在配置类中使用@EnableJpaRepository注释,如以下示例所示: 由于配置类不在应用程序根包中,因此我们还设置了base PackageClass属性,以便找到我们的存储库。一切都按预期进行,因此到目前为止没有问题。 现在,我们想创建一个sprin
问题内容: 如何从另一个类中处置JFrame?我的代码在下面列出。我使用Netbeans生成表单来生成窗口。我想使用另一个类进行处理(名称为needDispose)。 NETBEANS GENERATE (重要方法是getMainFrame()) 问题答案: 这是一个如何从另一个本身就是JFrame的类中释放JFrame的示例: