Spring CommandLineRunner需要一个找不到的bean
一般来说,我对制作API和Spring还不熟悉 我试图使用CommandLineRunner来填充我的存储库,但它说它找不到我放在参数中所需的beanSpring CommandLineRunner需要一个找不到的bean,spring,api,Spring,Api,一般来说,我对制作API和Spring还不熟悉 我试图使用CommandLineRunner来填充我的存储库,但它说它找不到我放在参数中所需的bean @SpringBootApplication public class DemoApplication { private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class); public static void main(S
@SpringBootApplication
public class DemoApplication {
private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public CommandLineRunner initializeDB(StudentRepository studentRepository){
return (args)->{
studentRepository.save(new Student("John1", "Doe1", "asdasda1","Comp Sci1",21));
studentRepository.save(new Student("John2", "Doe2", "asdasda2","Comp Sci2",22));
studentRepository.save(new Student("John3", "Doe3", "asdasda3","Comp Sci3",23));
studentRepository.save(new Student("John4", "Doe4", "asdasda4","Comp Sci4",24));
studentRepository.save(new Student("John5", "Doe5", "asdasda5","Comp Sci5",25));
studentRepository.save(new Student("John6", "Doe6", "asdasda6","Comp Sci6",26));
logger.info("The sample data has been generated");
};
}
}
这是我的应用程序类,下面是我的存储库类
import org.springframework.data.jpa.repository.JpaRepository;
import com.example.model.Student;
public interface StudentRepository extends JpaRepository<Student, Integer> {
}
import org.springframework.data.jpa.repository.JpaRepository;
导入com.example.model.Student;
公共界面StudentRepository扩展了JpaRepository{
}
有没有什么基本的东西是我缺少的?
提前感谢如果应用程序类与其他类不在超级包中,则必须在
springboot应用程序
中指定所有应扫描的包(用于组件扫描、Spring数据存储库等)
或者使用类型安全的方法
@SpringBootApplication(scanBasePackageClasses = {ClassFromPackage1.class, ClassFromPackage2.class})
或者,将所有包移动到应用程序类包的子包中,以便所有默认机制都发生。如果应用程序类与其他类不在超级包中,则必须在
SpringBootApplication
中指定应扫描的所有包(用于组件扫描、Spring数据存储库等)
或者使用类型安全的方法
@SpringBootApplication(scanBasePackageClasses = {ClassFromPackage1.class, ClassFromPackage2.class})
或者,将所有包移动到应用程序类包的子包中,这样所有默认机制都会发生。最简单和明智的做法
DemoApplication(或使用@SpringBootApplication
注释的任何类)应位于包结构的根目录下
这意味着,对于您希望spring管理其bean生命周期的任何其他类,将其移动到DemoApplication的(子)包中
换句话说,如果您的DemoApplication位于src/main/java/com/yourorg包中,那么StudentRepository应该位于src/main/java/com/yourorg(子)包中
DemoApplication(或使用@SpringBootApplication
注释的任何类)应位于包结构的根目录下
这意味着,对于您希望spring管理其bean生命周期的任何其他类,将其移动到DemoApplication的(子)包中
换句话说,如果您的DemoApplication位于src/main/java/com/yourorg包中,那么StudentRepository应该位于(sub)包中src/main/java/com/yourorg的包类的包结构如何?StudentRepository与应用程序类在同一个包中还是在子包中?StudentRepository位于其自己的包存储库中,而应用程序类位于其自己的包应用程序下。这两个包都位于同一个src/main/java包中以及其他任何类中您希望spring为其管理bean生命周期的SE,将其移动到(sub)DemoApplicationPackage类的包结构如何?StudentRepository与应用程序类在同一个包中还是在子包中?StudentRepository位于其自己的包存储库中,而应用程序类位于其自己的包应用程序下。这两个包都位于相同的src/main/java文件夹中您希望spring管理其bean的生命周期,将其移动到DemoApplications的(子)包中,就是这样。谢谢,就是这样。谢谢