[英]Spring MVC 4 controllers not called
編輯:我意識到我在ComponentScan
犯了一個錯誤,因為很多評論者指出,我對其進行了更改,但仍然無法正常工作(仍然是404)。
我有一個項目,正在使用所有基於注釋的配置。 這是配置文件:
WebConfig.java
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "src.controller")
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
WebInitializer.java
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
我也有一個持久性配置,但是我認為這與這個問題無關。 無論如何,這是我的根路徑控制器:
AuthorController.java
@Controller
@RequestMapping({"/authors", "/"})
public class AuthorController {
@Autowired
AuthorService authorservice;
@RequestMapping(method=RequestMethod.GET)
public String getAuthors(ModelMap model){
System.out.println("----------called--------------"); //not printed
List<Author> authors = authorservice.getAllAuthors();
model.addAttribute("authors", authors);
return "authors";
}
}
控制器永遠不會被調用,最終我會收到404錯誤。
您能告訴'AuthorController'所屬的軟件包的名稱嗎? 我認為問題出在@ComponentScan(basePackages = "src")
。 在這里,您應該添加控制器類的軟件包名稱。
@ComponentScan(basePackages = "com.sample.app")
@ComponentScan(basePackages = "com.sample.*")
@ComponentScan(basePackages = "com.*")
以上所有都是ComponentScan批注的有效條目。
@ComponentScan
批注的basePackages
屬性不表示Java代碼所在的文件夾。 它代表Spring應該在其中掃描Spring Bean的Java類的根包。
因此,如果您的控制器位於com.myapp.web.controllers
中, com.myapp.web.controllers
如下所示進行配置:
@ComponentScan(basePackages = "com.myapp.web.controllers")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.