it-roy-ru.com

Попробуйте определить бин типа в вашей конфигурации

Новый в весенний багажник (и весенний).

У меня есть этот простой загрузочный проект Spring, и я пытаюсь подключиться к MongoDB на удаленном сервере. У меня появляется следующее сообщение при запуске приложения.

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.

Структура проекта.

 enter image description here

А вот и мои занятия

@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);
	}
}

Я думаю, что точно следую этому уроку
https://www.youtube.com/watch?v=Hu-cyytqfp8

Пожалуйста, помогите мне в этом ... Заранее спасибо за вашу помощь!


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

Пожалуйста, добавьте ниже аннотации в DemoApplication

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

Если вы хотите избежать написания аннотаций, вы можете просто изменить свои пакеты com.mongotest.entities на com.mongotest.demo.entities и com.mongotest.repositories на com.mongotest.demo.repositories

Архитектура Spring Boot позаботится об отдыхе. На самом деле другие файлы и пакеты должны находиться на том же уровне или ниже вашего DemoApplication.Java.

1
Ankit Kumar

В моем случае я получал ту же ошибку, используя MySQL DB

решено с помощью@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

У меня есть 3 вспомогательных класса RedisManager, JWTTokenCreator и JWTTokenReader, которые мне нужно было передать в конструктор как зависимость от службы Spring 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);
  }
}

Класс обслуживания выглядит следующим образом

@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