当前位置:数据分析 > 深入理解Spring Boot架构

深入理解Spring Boot架构

  • 发布:2023-09-29 22:37

本文的内容将帮助您了解Java Spring Boot框架的层次结构。

“我决定每周二晚上都来一次小小的崩溃,而不是完全崩溃。” — 格雷厄姆·帕克

包com.example.Controller ; //导入语句放在这里 @RestController 公共类用户控制器{ //列出所有可用的项目 @GetMapping(path = "/projects", 生成 = MediaType.APPLICATION_JSON_VALUE) 公共 ResponseEntity> getProjects() { //执行验证检查 // 返回服务层提供的服务 } //应用项目 @PostMapping(路径 = "/apply-project", 消耗 = MediaType.APPLICATION_JSON_VALUE) 公共 ResponseEntity applyProject(@RequestBody Map json) { //执行验证检查 // 返回服务层提供的服务 } //上传简历 @PostMapping(路径 = "/upload-resume/{usn}") public ResponseEntity> uploadToDB(@RequestParam("file") MultipartFile[] file,@PathVariable String usn) { //执行验证检查 // 返回服务层提供的服务 } //下载简历@GetMapping("/files/download/{fileName:.+}") 公共 ResponseEntity downloadFromDB(@PathVariable String fileName) { //执行验证检查 // 返回服务层提供的服务 } }

上面的例子使用了@注解,用于告诉spring是否是RestController、PostMapping等

2.2 服务层:

www.sychzs.cn

包com.example.Service;

//导入语句

公共接口ProjectService {

    ResponseEntity> getProjects();

    HttpStatus applyProject(String USN,int project_id);

    ResponseEntity> uploadProjectDocument(MultipartFile[] files,int project_id);

}

www.sychzs.cn

包 com.example.Service;

//导入语句
@服务
公共类 ProjectServiceImpl 实现 ProjectService {
//将DAO注入依赖项(Autowire)
  
    @覆盖
    公共 ResponseEntity> getProjects() {
        尝试 {
           //使用DAO服务实现业务逻辑
        } catch (异常 e) {
            返回新的 ResponseEntity<>(null,HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
   
    @覆盖公共 HttpStatus applyProject(String USN, int project_id) {
   
    //使用DAO服务实现业务逻辑
    }
  
   //辅助函数
    公共ResponseEntity uploadToLocalFileSystem(MultipartFile文件,int project_id){
     
    }
    @覆盖
    公共ResponseEntity> uploadProjectDocument(MultipartFile []文件,int project_id){
       //使用DAO服务实现业务逻辑
    }

}

2.3 存储库/DAO 层:

www.sychzs.cn

包 com.example.Dao;

//导入语句

公共接口 ProjectDao 扩展 JpaRepository {

//您还可以在 JPA 提供的 CRUD 操作之上包含本地查询
//这里使用@Query注解和相应的函数添加查询

    @Query(value = "您的 SQL 查询",nativeQuery = true)
    公共列表 getProjects();

}

}

2.4 模型层:

www.sychzs.cn

包com.example.Entity;

//导入语句

@实体
@Table(名称=“项目”)
公开课项目{
    @ID
    @GenerateValue(策略 = GenerationType.IDENTITY)
    私有 int 项目 ID;
    @Column(nullable = false, name = "company_name")
    私有字符串公司名称;@Column(nullable = false, name = "描述")
    私有字符串描述;

    @Column(nullable = false, name = "要求")
    私有字符串要求;

    @Column(nullable = false, name = "经理")
    私有字符串管理器;
    @Column(nullable = false, name = "start_date")
    私有日期开始日期=新日期();

    @Column( 名称 = "结束日期")
    私有日期 end_date = new Date();
    @Column(nullable = false,name = "开放")
    私人 int 开放;
    @Column(名称=“资源”)
    私有字符串资源;
    公共 Set getStaff_incharge() {
        返回工作人员_负责人;
    }
    公共无效setStaff_incharge(设置staff_incharge){
        this.staff_incharge = Staff_incharge;
    }
    公共集合 getApplied_students(){
        返回应用的学生;
    }
    公共集 getDocuments(){
        返回文件;
    }
    public void setDocuments(Set 文档) {this.documents = 文档;
    }
    @JsonIgnore
    @ManyToMany(mappedBy="funded_projects")
    私人设定资金;
    公共集合 getFunds() {
        返还资金;
    }
    public void setFunds(Set资金) {
        this.funds = 资金;
    }
    公共无效setApplied_students(设置applied_students){
        this.applied_students = Applied_students;
    }
    公共集 getWorking_students(){
        返回在职学生;
    }
    公共无效setWorking_students(设置working_students){
        this.working_students =working_students;
    }
//构造函数
    公共项目(){
        极好的();
    }
    公共项目(int项目_id,字符串公司名称,字符串描述,字符串要求,字符串经理,日期开始日期,日期结束日期,int开放,字符串资源){
        极好的();
        this.project_id = 项目_id;
        this.company_name = 公司_name;
        this.description = 描述;this.requirements = 要求;
        this.manager = 经理;
        this.start_date = start_date;
        this.end_date = end_date;
        this.opening = 开放;
        this.resources = 资源;
    }
    公共 int getProject_id() {
        返回项目_id;
    }
    公共无效setProject_id(int project_id){
        this.project_id = 项目_id;
    }
    公共字符串 getCompany_name() {
        返回公司名称;
    }
    公共无效 setCompany_name(字符串公司名称){
        this.company_name = 公司_name;
    }

    公共字符串 getDescription() {
        返回描述;
    }
    公共无效setDescription(字符串描述){
        this.description = 描述;
    }
    公共字符串 getRequirements() {
        退货要求;
    }
    公共无效setRequirements(字符串要求){
        this.requirements = 要求;
    }
    公共字符串 getManager() {
        退货经理;}
    公共无效setManager(字符串管理器){
        this.manager = 经理;
    }
    公共日期 getStart_date() {
        返回开始日期;
    }
    公共无效setStart_date(日期start_date){
        this.start_date = start_date;
    }
    公共日期 getEnd_date() {
        返回结束日期;
    }
    公共无效setEnd_date(日期结束日期){
        this.end_date = end_date;
    }
    公共 int getOpening() {
        返回开口;
    }
    公共无效setOpening(int开放){
        this.opening = 开放;
    }
    公共字符串 getResources() {
        返回资源;
    }
    公共无效setResources(字符串资源){
        this.resources = 资源;
    }
    @覆盖
    公共字符串 toString() {
        返回“项目{”+
                “项目 ID=” + 项目 ID +
                ", 公司名称='" + 公司名称 + '\'' +
                ", descriptinotallow='" + 描述 + '\'' +", 要求='" + 要求 + '\'' +
                ", 经理='" + 经理 + '\'' +
                ", 开始日期 = " + 开始日期 +
                ", 结束日期 = " + 结束日期 +
                ", 开头=" + 开头 +
                ", 资源='" + 资源 + '\'' +
                '}';
    }
}

在上面的例子中,类代表一个表,它的数据成员代表表的属性。我们还可以使用OneToOne、ManyToOne、ManyToMany注解来表示表之间的关系。

上述实现并不完整,因为本文的目的是了解工作流程和层次结构。 Spring Boot 非常庞大,本文仅介绍其中的一小部分。如果本文有任何错误,我深表歉意。希望对您有所帮助,谢谢!

相关文章

最新资讯

热门推荐