写出相关代码,并区分文件
时间: 2024-09-27 08:07:29 浏览: 27
为了构建一个基于Spring框架的应用程序,并遵循MVC(Model-View-Controller)模式的设计,我们将创建三个主要的组件:`XxxController`、`XxxService` 和 `XxxDao` 类。下面我将给出这三者的一个简化示例以及如何在Spring环境中配置它们。
### XxxController.java (控制层)
这个类处理来自用户的请求并且调用服务层进行实际的操作。
```java
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.demo.service.XxxService;
@Controller
public class XxxController {
@Autowired
private XxxService service;
@GetMapping("/recharge")
public @ResponseBody String recharge(@RequestParam("phone") String phone, @RequestParam("amount") int amount) {
return service.recharge(phone, amount);
}
@GetMapping("/consume")
public @ResponseBody String consume(@RequestParam("phone") String phone, @RequestParam("amount") int amount) {
return service.consume(phone, amount);
}
}
```
### XxxService.java (服务层)
该层包含了所有的业务逻辑,如计算新的余额等。
```java
package com.example.demo.service;
import com.example.demo.dao.XxxDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class XxxService {
@Autowired
private XxxDao dao;
public String recharge(String phone, int amount) {
if (amount >= 200 && amount < 300) {
return dao.saveBalance(phone, amount + 10);
} else if (amount >= 300 && amount < 500) {
return dao.saveBalance(phone, amount + 20);
} else if (amount >= 500) {
return dao.saveBalance(phone, amount + 50);
} else {
return "充值失败!原因:金额不足";
}
}
public String consume(String phone, int amount) {
return dao.deductBalance(phone, amount);
}
}
```
### XxxDao.java (数据访问层)
这一层负责与数据存储交互,这里我们假设使用HashMap作为简单的内存中的数据存储。
```java
package com.example.demo.dao;
import java.util.HashMap;
import org.springframework.stereotype.Repository;
@Repository
public class XxxDao {
private HashMap<String, Integer> balances = new HashMap<>();
public synchronized String saveBalance(String phone, int amount) {
balances.put(phone, amount);
return "充值成功!手机号:" + phone + ",余额:" + amount + "元";
}
public synchronized String deductBalance(String phone, int amount) {
Integer balance = balances.getOrDefault(phone, -1);
if (balance == -1 || balance < amount) {
return "消费失败!原因:手机号不存在/余额不足";
} else {
balance -= amount;
balances.put(phone, balance);
return "消费成功!手机号:" + phone + ",本次消费:" + amount + "元,余额:" + balance + "元";
}
}
}
```
### Spring Configuration with XML (spring.xml)
```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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="xxxController" class="com.example.demo.controller.XxxController">
<property name="service" ref="xxxService"/>
</bean>
<bean id="xxxService" class="com.example.demo.service.XxxService">
<property name="dao" ref="xxxDao"/>
</bean>
<bean id="xxxDao" class="com.example.demo.dao.XxxDao"/>
</beans>
```
以上就是一个基本的例子,展示了如何利用Spring框架来实现一个具有明确分工层次的应用。注意,在实际应用中,可能会涉及到更复杂的事务管理、异常处理等内容。此外,这里的数据库操作被简化为使用了HashMap来模拟数据存储,而不是真正的数据库连接。
阅读全文