Spring MVC @pathvariable 注解不会将值从接口(interface)传递到实现

标签 spring spring-mvc annotations

服务等级

@Service

@RequestMapping(value = "employees")

public interface EmployeeService {

    @RequestMapping(value = "{id}", method = RequestMethod.GET)
    public @ResponseBody Employee getEmployee(@PathVariable("id") int employeeId) throws EmpException;

    @RequestMapping(method = RequestMethod.GET)
    public @ResponseBody List<Employee> getAllEmployees() throws EmpException;

    @RequestMapping(method = RequestMethod.POST)
    public @ResponseBody Employee createEmployee(@RequestBody Employee employee) throws EmpException;


    @RequestMapping(value ="{id}", method = RequestMethod.DELETE)
    public @ResponseBody UserInfo deleteEmployee(@PathVariable("id") int employeeId) throws EmpException;

    @RequestMapping(value="{id}", method = RequestMethod.PUT)
    public @ResponseBody Employee updateEmployee(@RequestBody Employee employee,@PathVariable("id") int employeeId) throws EmpException;

}

实现类

@Service("employeeService")

public class EmployeeServiceImpl implements EmployeeService {    
   @Autowired
   private Employee employee;

   private static final Logger logger = LoggerFactory.getLogger(EmployeeServiceImpl.class);
public Employee getEmployee(@PathVariable("id") int employeeId) throws EmpException {
        logger.info("Start getEmployee. ID="+employeeId);
        employee = employeeDao.getEmployee(employeeId);
        if(employee != null) {
            return employee;
        } else {
            throw new EmpException("ID: "+employeeId+" is not available");
        }
    }
}

在实现类中,我还使用了 @pathvariable 注释,然后只有employeeId 的值将从接口(interface)传递到实现,否则将出现空指针表达式。任何其他方式将值从接口(interface)传递到实现而不使用 @pathvariable 。

最佳答案

请求映射不在服务类上,而是在 Controller 上。

为此,您需要 @Controller annotation .

关于Spring MVC @pathvariable 注解不会将值从接口(interface)传递到实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290822/

相关文章:

nhibernate - 如何使用 NHibernate 和 Spring 为死锁配置 RetryAdvice 和 ExceptionTranslation

java - Spring Data Redis 1.7.2.RELEASE,注入(inject)RedisOperations而不是RedisTemplate

java - Swagger 的 Spring MVC 项目

类 FIELD 上的 java 注释不起作用

orm - 如何在 Doctrine 2 中映射单个字符列

java - 创建名称为 'dynamoDB-DynamoDBMapper' 的 bean 时出错

java - 如何在本地启动我的 grails 应用程序?

java - 如何创建路径 bean

hibernate - 应用程序需要在数据库重启时重新部署

java - 使用注释对方法强制执行 throw 语句