一、常规方式,controlller控制器不分层
package com.wzh.firstspringboot.Data;
public class Writer {
private String author;
private String gender;
private String dynasty;
private String title;
private String Style;
private String ID;
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getDynasty() {
return dynasty;
}
public void setDynasty(String dynasty) {
this.dynasty = dynasty;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getStyle() {
return Style;
}
public void setStyle(String style) {
Style = style;
}
@Override
public String toString() {
return "Writer{" +
"author='" + author + '\'' +
", gender='" + gender + '\'' +
", dynasty='" + dynasty + '\'' +
", title='" + title + '\'' +
", Style='" + Style + '\'' +
", ID='" + ID + '\'' +
'}';
}
public Writer() {
}
public Writer(String ID,String author, String gender,String dynasty, String title, String Style) {
this.ID=ID;
this.author = author;
this.gender= gender;
this.dynasty = dynasty;
this.title = title;
this.Style = Style;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>诗人信息</title>
</head>
<link rel="stylesheet" href="element-ui/index.css">
<script src="./js/vue.js"></script>
<script src="./element-ui/index.js"></script>
<script src="./js/axios-0.18.0.js"></script>
<body>
<h1 align="center">诗人信息列表展示</h1>
<div id="app">
<el-table :data="tableData" style="width: 100%" stripe border >
<el-table-column prop="ID" label="编号" align="center" min-width="20%" ></el-table-column>
<el-table-column prop="author" label="姓名" align="center" min-width="20%"></el-table-column>
<el-table-column prop="gender" label="性别" align="center" min-width="20%"></el-table-column>
<el-table-column prop="dynasty" label="朝代" align="center" min-width="20%"></el-table-column>
<el-table-column prop="title" label="头衔" align="center" min-width="20%"></el-table-column>
<el-table-column prop="style" label="风格" align="center" min-width="20%"></el-table-column>
</el-table>
</div>
</body>
<style>
.el-table .warning-row {
background: #cb9d4a;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>
<script>
new Vue({
el: "#app",
data() {
return {
tableData: []
}
},
mounted(){
axios.get('/poet').then(res=>{
if(res.data.statusCode){
this.tableData = res.data.data;
console.log(this.tableData);
}
});
},
methods: {
}
});
</script>
</html>
二、按照MVC的分层方式实现,常规java代码方式
public interface PoetDao {
public List<Writer> PoetDao();
}
public class PoetDaoA implements PoetDao {
@Override
public List<Writer> PoetDao() {
//解析xml文件,将解析的数据存储在Writer对象中
String file=this.getClass().getClassLoader().getResource("poet.xml").getFile();
List<Writer> writers = XmlParserUtils.parse(file, Writer.class);
return writers;
}
}
public interface PoetService {
public List<Writer> PoetService();
}
public class PoetServiceA implements PoetService {
private PoetDao poetDao=new PoetDaoA();
@Override
public List<Writer> PoetService() {
List<Writer> writers=poetDao.PoetDao();
writers.stream().forEach(writer->{
String gender=writer.getGender();
if("1".equals(gender)){
writer.setGender("男");
}
else if("2".equals(gender)){
writer.setGender("女");
}
});
return writers;
}
}
@RestController
public class PoetController {
private PoetService poetService=new PoetServiceA();
@RequestMapping("/poet")
public Result poet(){
List<Writer> writers=poetService.PoetService();
return Result.success(writers);
}
}
三、采用控制反转和依赖注入的MVC方式实现
@Component//控制反转
public class PoetDaoA implements PoetDao {
@Override
public List<Writer> PoetDao() {
//解析xml文件,将解析的数据存储在Writer对象中
String file=this.getClass().getClassLoader().getResource("poet.xml").getFile();
List<Writer> writers = XmlParserUtils.parse(file, Writer.class);
return writers;
}
}
@Component
public class PoetServiceA implements PoetService {
private PoetDao poetDao;
@Override
public List<Writer> PoetService() {
List<Writer> writers=poetDao.PoetDao();
writers.stream().forEach(writer->{
String gender=writer.getGender();
if("1".equals(gender)){
writer.setGender("男");
}
else if("2".equals(gender)){
writer.setGender("女");
}
});
return writers;
}
}
@Component
public class PoetServiceA implements PoetService {
@Autowired//依赖注入
private PoetDao poetDao;
public class PoetController {
@Autowired//依赖注入
private PoetService poetService;
@Component
public class PoetServiceB implements PoetService {
@Autowired//依赖注入
private PoetDao poetDao;
@Override
public List<Writer> PoetService() {
List<Writer> writers=poetDao.PoetDao();
writers.stream().forEach(writer->{
String gender=writer.getGender();
if("1".equals(gender)){
writer.setGender("男~");
}
else if("2".equals(gender)){
writer.setGender("女~");
}
});
return writers;
}
}
@Primary
@Component
public class PoetServiceA implements PoetService {
@Autowired//依赖注入
private PoetDao poetDao;
@Override
public List<Writer> PoetService() {
List<Writer> writers=poetDao.PoetDao();
writers.stream().forEach(writer->{
String gender=writer.getGender();
if("1".equals(gender)){
writer.setGender("男");
}
else if("2".equals(gender)){
writer.setGender("女");
}
});
return writers;
}
}
@RestController(value = "poet")
public class PoetController {
@Qualifier("poetServiceA")
@Autowired//依赖注入
private PoetService poetService;
@RequestMapping("/poet")
public Result poet(){
List<Writer> writers=poetService.PoetService();
return Result.success(writers);
}
}
@RestController(value = "poet")
public class PoetController {
@Resource(name="poetServiceB")
private PoetService poetService;