2016-11-15 2 views
1

Привет,Java Spring 4 (Аннотированный) Rest Контроллер не попал REST инструмент клиента в Firefox

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

Вот это application.properties:

server.port=8082 
server.contextPath =/

Вот класс SpringBootInitializer, который добавляет еще "/ API" для> регистрации сервлета:

public class App extends SpringBootServletInitializer { 

@Bean 
public DispatcherServlet dispatcherServlet() { 
    return new DispatcherServlet(); 
} 

@Bean 
public ServletRegistrationBean dispatcherServletRegistration() { 
    final ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet(), "/api/*"); 

    final Map<String, String> params = new HashMap<String, String>(); 
    params.put("contextClass", "org.springframework.web.context.support.AnnotationConfigWebApplicationContext"); 
    params.put("contextConfigLocation", "org.spring.sec2.spring"); 
    params.put("dispatchOptionsRequest", "true"); 
    registration.setInitParameters(params); 

    registration.setLoadOnStartup(1); 
    return registration; 
} 

// 

@Override 
protected SpringApplicationBuilder configure(final SpringApplicationBuilder application) { 
    return application.initializers(new MyApplicationContextInitializer()).sources(App.class); 
} 

public static void main(final String... args) { 
    new SpringApplicationBuilder(App.class).initializers(new MyApplicationContextInitializer()).run(args); 
} 
} 

Вот Контроллер, который добавляет еще «пользователей» к отображению. Метод> который я поставил точку отладки является FindAll и не требует отображения futher к> Добраться до него (то есть корень/пользователей /:

@Controller 
@RequestMapping(value = users) 
public class UserController extends AbstractController<User> { 

@Autowired 
private IUserService userService; 

public UserController() { 
    super(User.class); 
} 

// API 

// find 

@RequestMapping(method = RequestMethod.GET) 
@ResponseBody 
public void getItsWorking() { 
    System.out.println("It's Working!!!"); 
} 

} 

Вот сущность Пользователь:

@Entity 
public class User implements IEntity { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name="user_id") 
private Long user_id; 

@Column(name = "username", unique = true, nullable = false) 
private String name; 

@Column(unique = true, nullable = false) 
private String email; 

@Column(nullable = false) 
private String password; 

@Column(nullable = false) 
private Boolean locked; 


public User() { 
    super(); 
} 

public User(final String nameToSet, final String passwordToSet, /*final  
Set<Role> rolesToSet,*/ final Boolean lockedToSet) { 
    super(); 

    name = nameToSet; 
    password = passwordToSet; 
    locked = lockedToSet; 
} 

// API 

public Long getId() { 
    return user_id; 
} 

public void setId(final Long idToSet) { 
    user_id = idToSet; 
} 

public String getName() { 
    return name; 
} 

public void setName(final String nameToSet) { 
    name = nameToSet; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(final String emailToSet) { 
    email = emailToSet; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(final String passwordToSet) { 
    password = passwordToSet; 
} 

public Boolean getLocked() { 
    return locked; 
} 

public void setLocked(final Boolean lockedToSet) { 
    locked = lockedToSet; 
} 

} 

Вот выход на моем Spring загрузки отладки при запуске:

Mapped "{[/users],methods=[GET]}" onto public  
java.util.List<org.um.persistence.model.User> 
    org.um.web.controller.UserController.findAll(javax.servlet.http.HttpServletRequest) 

Таким образом, похоже, что это отображение правильно, но когда я ударил его, используя Rest> инструмент Client приплюсовать в Firefox, я получаю следующее при выполнении операции «GET» на> следующий адрес: http://localhost:8082/api/users с использованием Content-Type: application/json в моем заголовке.

Rest Client 404 Image

Что происходит?Очень смущен.

+0

Попробуйте изменить '@RequestMapping (значение = пользователи)' на '@RequestMapping (value ="/api/users ")'. – varun

ответ

1

Вы должны поставить @RequestMapping("/api") на вас класс, а @RequestMapping("/users") на вашем методе (который предпочтительно должен возвращать что-то клиенту).

В этом случае ваша конечная точка будет отображаться как /api/users, и вы сможете легко добавить дополнительные конечные точки под /api/* в этот класс.

+0

благодарю вас за ваш ответ Саймон, но все тот же 404. Что еще я должен проверить? –

+0

Оказалось, что у меня был класс SecurityFilterChain из предыдущей целевой сборки, что помешало мне получить доступ к контроллеру. После очистки и восстановления он без проблем справляется с остальным контроллером. –

Смежные вопросы