来自 Spring Gradle 库的控制器/RestController
Controller / RestController from Spring Gradle library
我想使用我编写的 Gradle 库中的控制器,但它没有在我使用该库的应用程序中自动装配。
当我在 运行 应用程序的 ApplicationClass 上使用 @Import(ControllerName.class)
时它确实有效,但是我必须手动从库 class 中导入每个
@ComponentScan
不起作用,根据我的阅读,它不适用于 @Controller
和 @RestController
无论如何只能与 @Bean
、@Service
一起使用和 @Component
.
这是库中的控制器-class(我省略了业务逻辑)
@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 的 Class,但是我需要从我的库中正确自动装配东西的是带有 @Configuration 的 class。
因为我也有存储库和实体,所以我还需要在库中定义它们的包 -> 所以我在库中添加了一个 class,如下所示:
@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);
}
}
我想使用我编写的 Gradle 库中的控制器,但它没有在我使用该库的应用程序中自动装配。
当我在 运行 应用程序的 ApplicationClass 上使用 @Import(ControllerName.class)
时它确实有效,但是我必须手动从库 class 中导入每个
@ComponentScan
不起作用,根据我的阅读,它不适用于 @Controller
和 @RestController
无论如何只能与 @Bean
、@Service
一起使用和 @Component
.
这是库中的控制器-class(我省略了业务逻辑)
@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 的 Class,但是我需要从我的库中正确自动装配东西的是带有 @Configuration 的 class。
因为我也有存储库和实体,所以我还需要在库中定义它们的包 -> 所以我在库中添加了一个 class,如下所示:
@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);
}
}