java - Spring Gradle 库中的 Controller/RestController

标签 java spring gradle controller autowired

我想使用我编写的 Gradle 库中的 Controller ,但它在我使用该库的应用程序中没有 Autowiring 。

当我在正在运行的应用程序的 ApplicationClass 上使用 @Import(ControllerName.class) 时,它确实有效,但随后我必须从库中手动导入每个类

@ComponentScan 不起作用,从我的阅读来看,它不能与 @Controller@RestController 一起使用,无论如何只能与 @Bean@Service@Component 一起使用。

这是库中的 Controller 类(我省略了业务逻辑)

@Controller
public class FrontendController {


    @GetMapping("/login")
    public String showLoginForm(){
        return "login";
    }

    //some other endpoints
}

这是我主应用程序中当前的 applicationClass:

@SpringBootApplication
@ComponentScan(basePackages = {"com.myapp.demo", "com.myapp.login-lib"})
public class DemoApplication {

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

}

最佳答案

我发现了我的错误。在我的库中,我(显然)不需要一个具有 public static void main 的类,但我确实需要从我的库中正确地 Autowiring 内容是一个带有 @Configuration 的类。

由于我也有存储库和实体,所以我还需要在库中定义它们的包 -> 所以我向库中添加了一个类,如下所示:

@Configuration
@ComponentScan(basePackages = {"com.myapp.login-lib"})
@EnableJpaRepositories(basePackages = {"com.myapp.login-lib"})
@EntityScan(basePackages = {"com.myapp.login-lib"})
public class BaseConfiguration {
}

然后在我使用该库的应用程序中,我只需要导入该配置:

import com.myapp.login-lib.BaseConfiguration;

@SpringBootApplication
@Import(BaseConfiguration.class)
public class DemoApplication {

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

}

关于java - Spring Gradle 库中的 Controller/RestController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60044999/

相关文章:

Android Proguard 请更正上述警告

java - Gradle 和 Spring-bootRun 找不到我的类(class)

Java远程连接

java - 我如何在 Spring 中将 AOP 建议应用于 ConstraintValidator<A,T>?

java - Spring注释不起作用

java - Struts + Spring + Hibernate 集成

Mac OS 中的 Java 命令 Runtime.getRuntime().exec()

java - 静态属性访问PHP中的静态属性

java - 远程客户端NotBoundException

java - 我们如何在远程 jboss 8.2 wildfly 服务器中部署ear文件?