spring和springMVC集成
前期准备工作
1. 复制配置文件
将Spring项目中的 src/main/resources/applicationContext.xml
文件复制到Spring MVC项目的 src/main/resources
目录下。这是因为Spring MVC项目需要使用Spring的上下文配置文件来管理Bean和依赖注入。Spring MVC项目中有自己独立的配置需求,将配置文件复制过来可以确保两个项目在Bean定义和依赖管理方面的一致性。
2. 复制Service包
将Spring项目中的 cn/edu/guet/service
目录下的 service
包复制到Spring MVC项目的 src/main/java/cn/edu/guet/controller
目录下。目的是在Spring MVC项目中使用相同的服务类。这样可以避免重复编写相同的服务逻辑,并保持业务逻辑的一致性。
3. 修改applicationContext.xml
文件
由于Service类路径改变(从 cn.edu.guet.service
变为 cn.edu.guet.controller.service
),需要更新 applicationContext.xml
文件中的Bean定义路径。例如:
<bean class="cn.edu.guet.controller.service.impl.UserServiceImpl" id="userService"/>
这确保了Spring能够正确地找到和实例化这些Bean。
4. 设置依赖注入
在Spring MVC项目的 LoginController
类中,使用注入的 userService
来实现业务逻辑。如果 LoginController
类中没有依赖注入 userService
,会导致编译错误或运行时错误。通过在 LoginController
中创建 userService
属性并设置setter方法,可以确保 userService
被正确地注入并使用:
public class LoginController {
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
}
在 applicationContext.xml
中配置依赖注入:
<bean class="cn.edu.guet.controller.LoginController" id="loginController">
<property name="userService" ref="userService"/>
</bean>
这确保了 LoginController
中的 userService
属性能够被Spring正确地注入,从而可以在控制器中使用服务层逻辑。
开始集成
1. 添加ContextLoaderListener
在 src/main/webapp/WEB-INF/web.xml
文件中添加 ContextLoaderListener
和 context-param
配置:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
这是为了在应用启动时加载Spring应用上下文,确保Spring的配置文件被正确读取和加载。
2. 确定集成是否成功
在 LoginController.java
中编写测试代码,检查 userService
是否被正确注入,并调用 userService
的 login
方法:
@Controller
public class LoginController {
private UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
@PostMapping("/login")
@ResponseBody
public User login(String username, String password) {
System.out.println("空空空空空:" + userService);
return userService.login(username, password);
}
}
3. 加入 @Autowired
注解
在 setUserService
方法上加入 @Autowired
注解是为了告诉Spring在启动时自动注入 userService
。这个注解可以自动将 UserService
实例注入到 LoginController
中,确保在调用 login
方法时 userService
已经被正确实例化。
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
4. 使用APIFOX测试
通过APIFOX发送POST请求到 /login
,并传递 username
和 password
参数,检查控制台输出和返回结果:
{
"username": "testUser",
"password": "testPassword"
}
验证集成成功
- 启动应用:运行Spring MVC项目,确保项目成功启动且没有错误。
- 检查日志:观察控制台输出,确保
userService
被正确注入并在控制台输出中打印。 - 测试API:使用APIFOX发送请求,确认
login
方法被正确调用,并返回预期结果。