Consider defining a bean of type 'package' in your configuration [Spring-Boot]
It might be because the project has been broken down into different modules.
@SpringBootApplication
@ComponentScan({"com.delivery.request"})
@EntityScan("com.delivery.domain")
@EnableJpaRepositories("com.delivery.repository")
public class WebServiceApplication extends SpringBootServletInitializer {
Consider defining a bean of type 'service' in your configuration [Spring boot]
A class must have the @Component
annotation or a derivation of that (like @Service
, @Repository
etc.) to be recognized as a Spring bean by the component scanning. So if you add @Component
to the class, it should solve your problem.
Trying to autowire an interface. Error: Consider defining a bean of type "interface"
Yes you can inject an interface. But there should be at least one implementation that is declared as bean, so Spring manages it and will know what to inject. If you have more then one implementation you will need to specify which one you want. Read about annotation @Resource
and about and it's property "name". A good article to read about it would be Wiring in Spring: @Autowired, @Resource and @Inject. Also, If you have many implementations of the same interface and want to inject them all you can do this:
@Autowired
private List<DataSource> dataSources;
If DataSource
is an interface the list will contain all of its implementations. You can read about it here and here
How to fix this issue "Consider defining a bean of type 'repository.InterfaceName' in your configuration."
Move the packages controller
, repository
, model
and service
to com.firstproject.myfirstproject
. With this you may get rid of scanBasePackages = {"controller","service","model"}
and use only @SpringBootApplication
as follows:
package com.firstproject.myfirstproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyFirstProjectApplication {
public static void main(String[] args) {
SpringApplication.run(MyFirstProjectApplication.class, args);
}
}
@SpringBootApplication
encapsulates @Configuration
, @EnableAutoConfiguration
, and @ComponentScan
annotations with their default attributes. The default value for @ComponentScan
means that all the sub packages on the package the @ComponentScan
is used are scanned. That is why it is usually a good practice to include the main class in the base package of the project.
Consider defining a bean of type in your configuration
Please add below annotations in DemoApplication
@SpringBootApplication
@ComponentScan("com.mongotest") //to scan packages mentioned
@EnableMongoRepositories("com.mongotest") //to activate MongoDB repositories
public class DemoApplication { ... }
Related Topics
Lombok Is Not Generating Getter and Setter
What Is the Most Elegant Way to Check If All Values in a Boolean Array Are True
How to Enable Request Scope in Async Task Executor
Wait Until All Threads Finish Their Work in Java
How to Load 100 Million Rows in to Memory
How to Pass an Array to Constructor
Set Current Timezone to @Jsonformat Timezone Value
Error: Incompatible Types: List<Integer> Cannot Be Converted to Arraylist<Integer>
How to Pass Topics Dynamically to a Kafka Listener
How to Use Junit to Test Asynchronous Processes
How Is This Wrong - Hackerrank Loop in Java
Java - How to Find Students With Their Highest Marks Writing a Method in a Student Class
Get Current Week Start and End Date in Java - (Monday to Sunday)
Pdf to Byte Array and Vice Versa