web-dev-qa-db-fra.com

Pensez à définir un bean de type dans votre configuration.

Nouveau à la botte de printemps (et au printemps).

J'ai ce projet de démarrage Spring simple et j'essaie de me connecter à MongoDB sur un serveur distant. J'ai le message suivant lorsque je lance l'application.

Description:

Parameter 0 of constructor in com.mongotest.demo.Seeder required a bean of type 'com.mongotest.repositories.StudentRepository' that could not be found.


Action:

Consider defining a bean of type 'com.mongotest.repositories.StudentRepository' in your configuration.

La structure du projet.

 enter image description here

Et voici mes cours

@Document(collection = "Students")
public class Student {
	
	@Id
	private String number;
	private String name;
	@Indexed(direction = IndexDirection.ASCENDING)
	private int classNo;

//Constructor and getters and setters.
}

================================

@Repository
public interface StudentRepository extends MongoRepository<Student, String>{

}

================================

@Component
@ComponentScan({"com.mongotest.repositories"})
public class Seeder implements CommandLineRunner{

	private StudentRepository studentRepo;
	
	public Seeder(StudentRepository studentRepo) {
		super();
		this.studentRepo = studentRepo;
	}

	@Override
	public void run(String... args) throws Exception {
		// TODO Auto-generated method stub

		Student s1 = new Student("1","Tom",1);
		Student s2 = new Student("2","Jerry",1);
		Student s3 = new Student("3","Kat",2);
		studentRepo.deleteAll();
		studentRepo.save(Arrays.asList(s1,s2,s3));
		
	}

}

================================

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

Je pense que je suis exactement ce tutoriel
https://www.youtube.com/watch?v=Hu-cyytqfp8

S'il vous plaît aidez-moi sur ce . Merci d'avance pour votre aide!


pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.mongotest</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<Java.version>1.8</Java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-Java-driver</artifactId>
			<version>3.4.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

3
Chase

Veuillez ajouter les annotations ci-dessous dans DemoApplication

@SpringBootApplication
@ComponentScan("com.mongotest") //to scan packages mentioned
@EnableMongoRepositories("com.mongotest") //to activate MongoDB repositories
public class DemoApplication { ... }
2
Saravana

Si vous souhaitez éviter d'écrire des annotations, vous pouvez simplement modifier vos packages com.mongotest.entities en com.mongotest.demo.entities et com.mongotest.repositories en com.mongotest.demo.repositories

L'architecture Spring Boot prendra soin du repos. En réalité, les autres fichiers et packages sont supposés être au même niveau ou inférieurs à votre DemoApplication.Java.

1
Ankit Kumar

Dans mon cas, j'avais la même erreur avec mysql db

résolu avec@EnableJpaRepositories

@SpringBootApplication
@ComponentScan("com.example.repositories")//to scan repository files
@EntityScan("com.example.entities")
@EnableJpaRepositories("com.example.repositories")
public class EmployeeApplication implements CommandLineRunner{ ..}
1
Saurabh

J'ai 3 classes d'assistance RedisManager, JWTTokenCreator et JWTTokenReader que j'avais besoin de passer en constructeur en tant que dépendance du service de session SessionService.

@SpringBootApplication
@Configuration
public class AuthenticationServiceApplication {
  @Bean
  public SessionService sessionService(RedisManager redisManager, JWTTokenCreator tokenCreator, JWTTokenReader tokenReader) {
    return new SessionService(redisManager,tokenCreator,tokenReader);
  }

  @Bean
  public RedisManager redisManager() {
    return new RedisManager();
  }

  @Bean
  public JWTTokenCreator tokenCreator() {
    return new JWTTokenCreator();
  }

  @Bean
  public JWTTokenReader JWTTokenReader() {
    return new JWTTokenReader();
  }

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

La classe de service est la suivante

@Service
@Component
public class SessionService {
  @Autowired
  public SessionService(RedisManager redisManager, JWTTokenCreator 
      tokenCreator, JWTTokenReader tokenReader) {

      this.redisManager = redisManager;
      this.tokenCreator = tokenCreator;
      this.jwtTokenReader = tokenReader;

   }
}
0
Sushrut Kanetkar