本文介绍了春季启动:仅将@Configuration应用于某些软件包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 @Configuration 来配置cookie,而在我的项目中有2个软件包,我只想将配置应用于其中一个软件包。

是否可以通过任何方式为 @Configuration 设置目标软件包?

I am using @Configuration to config cookies, while in my project there is 2 packages and I only want to apply the config to one of the package.
Are there any ways to set the target package for @Configuration?

程序包结构:

--app

---- packageA

- ---MyConfigClass.java

---- packageB

package structure:
--app
----packageA
------MyConfigClass.java
----packageB

@EnableJdbcHttpSession(maxInactiveIntervalInSeconds = 1800)
@Configuration
public class MyConfigClass extends WebMvcConfigurerAdapter {
@Bean
    public CookieSerializer cookieSerializer() {
        // I want the follow cookie config only apply to packageA
        DefaultCookieSerializer serializer = new DefaultCookieSerializer();
        serializer.setCookieName("myCookieName");
        serializer.setCookiePath("/somePath/");
        return serializer;
    }
}


推荐答案

实际上,您可以使用 @ComponentScan 指定要扫描的软件包,并使用 @EnableAutoConfiguration 的排除选项来省略类您想忽略的地方。您必须在主应用程序类中使用它。

Actually, you can use @ComponentScan to specify which packages to scan for and @EnableAutoConfiguration with the exclude options to omit the classes that you want to omit. You have to use this in your main application class.

@EnableAutoConfiguration(exclude = { Class1.class,
        Class2.class,
        Class3.class },
excludeName = {"mypackage.classname"}))
@Configuration
@ComponentScan(basePackages = { "mypackage" })
public class MyApplication {

public static void main(String[] args) throws Exception {
        SpringApplication.run(MyApplication.class, args);
    }
}

或者,您也可以提供所需的类

Alternatively, you can also provide the classes that you want to exclude in your configuration file.

# AUTO-CONFIGURATION
spring.autoconfigure.exclude= # Auto-configuration classes to exclude.

这篇关于春季启动:仅将@Configuration应用于某些软件包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-06 01:07