Reputation: 343
I am new to spring boot and i am writing CRUD operation for basic practices, here is my code.
DemoApplication.java:
package com.example.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
User.java
package com.example.model;
public class User {
String userName;
String password;
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserServices.java:
package com.example.services;
import com.example.model.User;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
@Repository
public interface UserServices {
public String loginService(User user);
}
UserServiceImplementatioin.java:
package com.example.serviceimplementation;
import com.example.model.User;
import com.example.services.UserServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImplementation implements UserServices {
public String loginService(User user) {
if(user.getUserName().equals("demouser") && user.getPassword().equals("demopass")) {
return "Login successfully";
}
return "Invalid Username and password";
}
}
ServiceController.java:
package com.example.controller;
import com.example.services.UserServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;
import com.example.model.User;
@RestController
@RequestMapping(value="/askmeanything")
public class ServiceController {
@Autowired
private UserServices userServices;
public UserServices getUserServices() {
return userServices;
}
public void setUserServices(UserServices userServices) {
this.userServices = userServices;
}
@CrossOrigin(origins = "*")
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String getMsg(@RequestBody User user) throws Exception {
return userServices.loginService(user);
}
}
above code giving me the error Field userServices in com.example.controller.ServiceController required a bean of type 'com.example.services.UserServices' that could not be found.
Upvotes: 1
Views: 103
Reputation: 2117
This is because your DemoApplication
is defined in he following package com.example.controller
. Thus by default Spring will only scan that package and desendence of it. E.g. com.example.controller.something
. It will not scan in parent packages.
Either you move your DemoApplication
to the parent package or you have to specify the correct packages for component-scan.
@SpringBootApplication(scanBasePackages={"com.example"})
I suggest to move the class to the parent package and let spring boot do the magic.
Upvotes: 3