这基于https://spring.io/guides/gs/accessing-data-jpa/
我尝试将Application
移动到另一个包中的另一个类中(demo()
仍位于文件系统层次结构之上)
启动项目时如何让package com.company.app
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
运行?
Application.java
package com.company.app.runner
public class Test {
@Bean
public CommandLineRunner demo() {
System.out.print("Run 1");
return (args) -> {
System.out.print("Run 2");
};
}
}
CommandLineRunner.java
mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
答案 0 :(得分:3)
将@Configuration
添加到Test
类,以便在扫描类路径时拾取它。
我以前没有看过CommandLineRunner的Lambda。非常漂亮,节省了必须创建一个专门实现CommandLineRunner的类。
否则,您可以实现CommandLineRunner来测试和注释为@Component。
@Component
public class ApplicationLoader implements CommandLineRunner {
@Override
public void run(String... strings) throws Exception {
System.out.print("Run 2");
}
}
*更新* 通过此更新回答评论中的问题,因为我有更多的空间来输入...
@SpringBootApplication
按照您的指示编写其他注释,但这些注释仅应用于定义的特定类。 @Configuration
注释告诉Spring该类定义应由应用程序上下文管理的bean。 @ComponentScan
告诉spring查看具有特定注释的类的类路径(例如@Component
,@Service
,@Configuration
),然后根据类型对这些类进行操作注解。 @EnableAutoConfiguration
是基于项目依赖性加载适当bean的魔法(例如,如果mongo驱动程序在类路径上,则创建MongoTemplate
)。