java – Spring mvc控制器bean配置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring mvc控制器bean配置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10548字,纯文字阅读大概需要16分钟。
内容图文
![java – Spring mvc控制器bean配置](/upload/InfoBanner/zyjiaocheng/763/3896088399c743d6b3b8a496ba34f923.jpg)
我正在使用Spring mvc开发一个项目,我解决了启动服务器时自动生成处理程序的问题.
这是代码:
调节器
@Controller
@RequestMapping(value="userstory/{projectid}/{sprintid}/")
@SessionAttributes(value = "user")
public class UserstoryController {
private ISprintService sprintService;
private IUserStoryService userStoryService;
private IProjectService projectService;
private IBurnDownChartService burnDownChartService;
private ITaskService taskService;
public void setSprintService(ISprintService sprintService) {
this.sprintService = sprintService;
}
public void setUserStoryService(IUserStoryService userStoryService) {
this.userStoryService = userStoryService;
}
public void setProjectService(IProjectService projectService) {
this.projectService = projectService;
}
public void setBurnDownChartService(IBurnDownChartService burnDownChartService) {
this.burnDownChartService = burnDownChartService;
}
public void setTaskService(ITaskService taskService) {
this.taskService = taskService;
}
@RequestMapping(method=RequestMethod.GET)
public String getUserstoryPage(@PathVariable("projectid") int pid, @PathVariable("sprintid") int sid, @ModelAttribute("user") SerializablePerson user) {
if (user.getId() != 0) {
Project p = this.projectService.findProjectById(pid);
if (p == null) {
throw new ResourceNotFoundException(pid);
}
if (user.getRole().equals("User")) {
return "userstory/user_userstory";
}
else {
return "userstory/admin_userstory";
}
}
return "redirect:../../../login";
}
}
beans.xml中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="personServiceImpl" class="ch.bsgroup.scrumit.service.impl.PersonServiceImpl" />
<bean id="projectServiceImpl" class="ch.bsgroup.scrumit.service.impl.ProjectServiceImpl" />
<bean id="sprintServiceImpl" class="ch.bsgroup.scrumit.service.impl.SprintServiceImpl" />
<bean id="userStoryServiceImpl" class="ch.bsgroup.scrumit.service.impl.UserStoryServiceImpl" />
<bean id="taskServiceImpl" class="ch.bsgroup.scrumit.service.impl.TaskServiceImpl" />
<bean id="projectService" class="ch.bsgroup.scrumit.service.impl.ProjectServiceImpl" />
<bean id="personService" class="ch.bsgroup.scrumit.service.impl.PersonServiceImpl" />
<bean id="sprintService" class="ch.bsgroup.scrumit.service.impl.SprintServiceImpl" />
<bean id="userStoryService" class="ch.bsgroup.scrumit.service.impl.UserStoryServiceImpl" />
<bean id="burnDownChartService" class="ch.bsgroup.scrumit.service.impl.BurnDownChartServiceImpl" />
<bean id="taskService" class="ch.bsgroup.scrumit.service.impl.TaskServiceImpl" />
<bean id="sprintUserstoryController" class="ch.bsgroup.scrumit.controller.SprintUserstoryController">
<property name="sprintService">
<ref local="sprintService"/>
</property>
<property name="userStoryService">
<ref local="userStoryService"/>
</property>
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="burnDownChartService">
<ref local="burnDownChartService"/>
</property>
<property name="taskService">
<ref local="taskService"/>
</property>
</bean>
<bean id="boardController" class="ch.bsgroup.scrumit.controller.BoardController">
<property name="sprintService">
<ref local="sprintService"/>
</property>
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="userStoryService">
<ref local="userStoryService"/>
</property>
<property name="taskService">
<ref local="taskService"/>
</property>
<property name="burnDownChartService">
<ref local="burnDownChartService"/>
</property>
</bean>
<bean name="register.jsp" id="registerController" class="ch.bsgroup.scrumit.controller.RegisterController">
<property name="personService">
<ref local="personService"/>
</property>
</bean>
<bean id="loginController" class="ch.bsgroup.scrumit.controller.LoginController" >
<property name="personService">
<ref local="personService"/>
</property>
</bean>
<bean id="adminProjectController" class="ch.bsgroup.scrumit.controller.AdminProjectController">
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="personService">
<ref local="personService"/>
</property>
</bean>
<bean id="userProjectController" class="ch.bsgroup.scrumit.controller.UserProjectController">
<property name="projectService">
<ref local="projectService"/>
</property>
</bean>
<bean id="adminPersonController" class="ch.bsgroup.scrumit.controller.AdminPersonController">
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="personService">
<ref local="personService"/>
</property>
</bean>
<bean id="manageProjectMemberController" class="ch.bsgroup.scrumit.controller.ManageProjectMemberController">
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="personService">
<ref local="personService"/>
</property>
</bean>
<bean id="manageUserstoryController" class="ch.bsgroup.scrumit.controller.UserstoryController">
<property name="sprintService">
<ref local="sprintService"/>
</property>
<property name="userStoryService">
<ref local="userStoryService"/>
</property>
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="burnDownChartService">
<ref local="burnDownChartService"/>
</property>
<property name="taskService">
<ref local="taskService"/>
</property>
</bean>
</beans>
我复制所有bean以显示没有userstoryController映射.
web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>scrumit</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>scrumit</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
</web-app>
APP-config.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan base-package="ch.bsgroup.scrumit.controller" />
<!-- Application Message Bundle -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/messages" />
<property name="cacheSeconds" value="0" />
</bean>
<!-- Including beans -->
<import resource="beans.xml" />
<!-- Configures Spring MVC -->
<import resource="mvc-config.xml" />
</beans>
这就是我启动服务器时的情况:
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/userstory/{projectid}/{sprintid}/] onto handler 'userstoryController'
错误是:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Cannot map handler 'manageUserstoryController' to URL path [/userstory/{projectid}/{sprintid}/]: There is already handler of type [class ch.bsgroup.scrumit.controller.UserstoryController] mapped.
由于userstoryController的存在,该程序不允许我将UserstoryController映射到manageUserstoryController.
任何人都可以向我解释为什么生成userstoryController,以及如何正确映射它.
提前致谢.
解决方法:
问题如下.这个元素
<context:component-scan base-package="ch.bsgroup.scrumit.controller" />
因为@Controller,已经创建了UserstoryController控制器的实例.然后< bean> beans.xml中的元素创建另一个元素.
使用@Controller注释类并进行适当的组件扫描时,不应在上下文中声明单独的bean元素.
事实是,所有这一切
<bean id="boardController" class="ch.bsgroup.scrumit.controller.BoardController">
<property name="sprintService">
<ref local="sprintService"/>
</property>
<property name="projectService">
<ref local="projectService"/>
</property>
<property name="userStoryService">
<ref local="userStoryService"/>
</property>
<property name="taskService">
<ref local="taskService"/>
</property>
<property name="burnDownChartService">
<ref local="burnDownChartService"/>
</property>
</bean>
可以用字段上相应的@Autowired注释替换.你甚至不需要getter和setter.例如
@Controller
@RequestMapping(value="userstory/{projectid}/{sprintid}/")
@SessionAttributes(value = "user")
public class UserstoryController {
@Autowired
private ISprintService sprintService;
@Autowired
private IUserStoryService userStoryService;
@Autowired
private IProjectService projectService;
@Autowired
private IBurnDownChartService burnDownChartService;
@Autowired
private ITaskService taskService;
@RequestMapping(method=RequestMethod.GET)
public String getUserstoryPage(@PathVariable("projectid") int pid, @PathVariable("sprintid") int sid, @ModelAttribute("user") SerializablePerson user) {
if (user.getId() != 0) {
Project p = this.projectService.findProjectById(pid);
if (p == null) {
throw new ResourceNotFoundException(pid);
}
if (user.getRole().equals("User")) {
return "userstory/user_userstory";
}
else {
return "userstory/admin_userstory";
}
}
return "redirect:../../../login";
}
}
这是一些相关的文档:
> What’s the difference between @Component, @Repository & @Service annotations in Spring?
> Spring MVC: difference between <context:component-scan> and <annotation-driven /> tags?
> Difference between <context:annotation-config> vs <context:component-scan>
内容总结
以上是互联网集市为您收集整理的java – Spring mvc控制器bean配置全部内容,希望文章能够帮你解决java – Spring mvc控制器bean配置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。