当前位置: 首页 > news >正文

Spring学习

目录

 关于Spring

Spring MVC

MVC

三层架构

 三层架构项目结构


 

 关于Spring

Spring ,SpringBoot, Spring MVC属于Spring家族的产品。

Spring就是一个框架,是为了简化java开发;SpringBoot是基于Spring的一个框架,为了简化Spring项目而诞生的。

Spring MVC

Spring MVC又为Spring Web MVC,是一种Web框架。

MVC

MVC是Model View Controller的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分。

  • View(视图):指在应用程序中专门用来与浏览器进行交互,展示数据的资源。
  • Model(模型):是应用程序的主体部分,用来处理程序中数据逻辑的部分。
  • Controller(控制器):可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪个模型来处理,以及处理完后需要跳转到哪一个视图。即用来连接视图和模型。

三层架构

目前现在更主流的开发方式是“前后端分离”的方式,后端开发工程师不再需要关注前端的实现,所以对于Java后端开发,又有了一种新的分层架构:把整体架构分为表现层、业务逻辑层和数据层。这种分层方式也称之为“三层架构”

1.表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层;

2.业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现;

3.数据访问层:负责存储和管理与应用程序相关的数据,包括增删改查。

三层架构和MVC的区别和联系:

 三层架构项目结构

src/main/java
├── com.example.demo
│   ├── controller(package)              // 表现层(Controller)
│   │   └── UserController.java
│   ├── service(package)                // 业务逻辑层(Service)
│   │   ├── UserService.java (interface )
│   │   └── impl (package)
│   │       └── UserServiceImpl.java
│   ├── repository (package)         // 数据访问层(Repository)
│   │   └── UserRepository.java (interface )
│   ├── Model(package)                // 实体类(Model)
│   │   └── User.java
│   └── DemoApplication.java

 具体代码:

//表现层(控制类)
@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    BookService service;

    @RequestMapping("/booklist")
    public String booklist() {
        List<Book> list = service.getMessage();
        return list.toString();
    }
}

//实体类
@Data
public class Book {
    private Integer id;
    private String from;
    private String to;
    private String deleteFlag;
    private String createTime;
    private String updateTime;
}


//数据访问层
@Mapper
public interface BookRepository {

    @Select("select *from message_info")
    List<Book> getBooks();

}

//业务逻辑层
@Service
public class BookService {

    @Autowired
    BookRepository bookRepository;

    public List<Book> getMessage(){
        return bookRepository.getBooks();
    }

}

相关文章:

  • 128. Longest Consecutive Sequence
  • 力扣222. 完全二叉树的节点个数(Java实现)
  • Java 生成钻石*
  • 【高项】信息系统项目管理师(八)项目质量管理【3分】
  • 主流的Java生态下权限管理框架
  • 查看linux系统信息
  • 【linux】scp和rsync
  • PHP转GO Day2 数据类型与控制结构实践(开发计算器)
  • BRAM消耗与FIFO的关系:有效利用FPGA资源的策略
  • 面试整理--一个报告生成的方案解析
  • excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果追加到json文件
  • C语言:字符串去特定字符
  • UGO和ACL
  • 从关键词到权重:TF-IDF算法解析
  • Atom of Thoughts for Markov LLM Test-Time Scaling论文解读
  • 凸集和凸函数
  • Google C++编码规范指南(含pdf)
  • python主成分分析法1
  • MyBatis 配置文件解析使用了哪些设计模式
  • 在 Dojo 框架中define、declare 和 require的区别
  • 【社论】城市更新,始终以人为核心
  • 美官方将使用华为芯片视作违反美出口管制行为,外交部回应
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯
  • 李强:把做强国内大循环作为推动经济行稳致远的战略之举
  • 中办、国办关于持续推进城市更新行动的意见
  • 沪指跌0.68%报3380.82点,创指跌1.92%:券商、军工跌幅靠前