我正在编写一个Spring MVC Web应用程序。我正在尝试使用基于Java的配置来配置Spring,但是Spring无法在不添加其他XML配置的情况下检测到我的控制器。
我的前端控制器类如下所示:
package no.magnus.controller;
public class FrontController extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {MvcConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
我的MVC配置类:
package no.magnus.config;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"no.magnus"})
public class MvcConfig implements WebMvcConfigurer {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver vr = new InternalResourceViewResolver();
vr.setSuffix(".jsp");
return vr;
}
}
简单的家用控制器:
package no.magnus.controller;
@Controller
public class HomeController {
@RequestMapping("/home")
public ModelAndView index() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
}
正在尝试访问urlhttp://localhost:8080/home我得到一个404错误。如果我将基于XML的配置添加到web。xml以及xml servlet配置,检测和索引家庭控制器。返回jsp。
子集 web.xml:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
dispatcher-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ctx="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<ctx:annotation-config/>
<ctx:component-scan base-package="no.magnus"/>
</beans>
http://localhost:8080/home 索引.jsp已成功返回!
我的期望是Spring MVC能够从java代码中检测Spring MVC配置,从而使上述XML配置变得多余。请澄清我的理解是否错误。
谢啦!
├───java
│ └───no
│ └───magnus
│ ├───config
│ │ MvcConfig.java
│ │
│ └───controller
│ FrontController.java
│ HomeController.java
│
└───webapp
│ result.jsp
│
└───WEB-INF
│ web.xml
│
└───jsp
index.jsp
http://localhost:8080/home不会调用您的< code>HomeController的< code > index()-Method(/home-Mapping)-在您发布的url中< code>home是您的应用程序的名称,您需要将< code >“/”映射到index.jsp。
请将您的< code>FrontController更改为:
package no.magnus.config;
public class FrontController extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// from
// return new Class[] {MvcConfig.class};
// to
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
// from
// return null;
// to
return new Class[] {MvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
您的MvcConfig应该如下所示:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@EnableWebMvc
@Configuration
// to also scan subpackages for components
@ComponentScan("no.magnus.**")
public class MvcConfig
implements
WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
configurer.enable();
WebMvcConfigurer.super.configureDefaultServletHandling(configurer);
}
@Override
public void configureViewResolvers(final ViewResolverRegistry registry) {
registry.viewResolver(this.jspViewResolver());
WebMvcConfigurer.super.configureViewResolvers(registry);
}
@Bean
public InternalResourceViewResolver jspViewResolver() {
final InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setOrder(1);
// jsp-location!!! - please change it to where your jsp's are located
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
您的HomeController
应该如下所示:
package no.magnus.controller;
@Controller("HomeController")
public class HomeController {
// for the very first start
// RequestMapping can be replaced with GetMapping
@GetMapping("/")
public ModelAndView index() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
}
我正在尝试使用Enunciate为我的REST API生成静态文档,该API是使用Spring MVC 3.2用Java编写的。Enuncite网站声称,它通过使用以下特定插件来支持Spring: http://enunciate.codehaus.org/module_spring_app.html 在查看配置选项时,看起来我应该导入一个spring applicationContext.xml
3.12 基于Java的容器配置 {#toc_5} 3.12.1 基本概念:@Bean 和 @Configuration {#toc_6} 最核心的是Spring支持全新的Java配置,例如@Configuration注解的类和@Bean注解的方法。 @Bean注解用来说明通过Spring IoC容器来管理时一个新对象的实例化,配置和初始化的方法。这对于熟悉Spring以XML配置的方式,@Bea
我试图将我现有的基于XML的spring批处理项目转换为基于java的配置。@Autowired对象返回null,尽管我已经在基本包中提到了componentscan。
我正在尝试将dwr包含在使用SpringMVC4.0.5的项目中。项目中使用基于Java的配置。对于基于java的配置,我在MVCConfiguration中使用以下代码行。 扩展类I的WebApplicationInitializer为dwr请求添加了映射。 但是在部署时,它显示错误,说明“应设置所需的‘配置器’属性”。如果配置需要任何修改,请建议如何设置配置器。 将 dwrController
pom.xml http://maven.apache.org/xsd/maven-4.0.0.xsd“xmlns=”http://maven.apache.org/pom/4.0.0“xmlns:xsi=”http://www.w3.org/2001/xmlschema-instance“> 堆栈跟踪:
我想做 从映射结构中包含的任何arraylist元素的CEP开始,然后继续我已经开始的其余arraylist元素 地图和图案结构: 我的目的是使用map中的数组列表元素发出警告,但由于其中的流流,数组列表元素的顺序并不重要。我想继续处理这个数组的其余元素,当我从这里的任何数组开始时,我可以返回这个数组的信息。例如: