Spring中的包结构,实体与模型与控制器

w3C*_*lie 4 java spring spring-mvc spring-boot

你如何定义MVC中的模型或实体?

我的大多数Spring代码都有类似他的包结构:http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-example/

我有我的观点,我的控制器,我的dao和dao的"模型"

但我试着学习百里香,发现了这个:https: //github.com/thymeleaf/thymeleafexamples-stsm

没有"模型"包,他称之为实体,它是一个实体但是......

然后我想......哦等一下...... entiy和模特的定义是什么?类似于这个问题: 实体与模型对比视图模型

那么你的包结构是什么,你称之为模型还是实体?你有春季项目的包名/结构的例子吗?

naz*_*art 8

从字面上看,a Model是代表POJO的类.Entity - 与DB有关系.

有时它们混合在一起,如:

package net.lelyak.edu.entity;

@Entity
public class User extends BaseEntity {
// fields + get/set 
Run Code Online (Sandbox Code Playgroud)

结构取决于您的项目或团队的惯例.

如果是您的个人项目,您可以完全决定要遵循的包结构.

这是我为春训做的一些方法:

在此输入图像描述

但是,出于您自己的目的,您可以完全决定如何管理包,以下也是合法的:

在此输入图像描述

主要思想是没有严格的边界.

对于个人项目,它必须为您提供便利.
当您在同一个项目上与其他人合作时,您必须同意这一点.

  • 逐层打包和按功能打包的好例子。 (2认同)

Pat*_*ick 7

我的 Spring 项目大多数都有如下所示的包结构。这个结构是我的dao, services, implementations,view和的基础结构util。当然,结构可以改变,这一切都取决于您需要开发什么。

com.companyName.appName.config -> 
I use config for my classes which are annotated with @Configuration.

com.companyName.appName.dao.model -> 
I use dao.model for all my entities from the DB.

com.companyName.appName.dao.repository -> 
I use dao.repository for all the repositories used with spring-data-jpa.

com.companyName.appName.dao.repository.impl -> 
I use dao.repository.impl for all customized implementations of repositories. 
For example to autowire the entityManager.

com.companyName.appName.service -> 
I use service for all my service interfaces

com.companyName.appName.service.impl -> 
I use service.impl for all my implementations of services

com.companyName.appName.controller -> 
I use controller for all my controllers.

com.companyName.appName.view.model -> 
I use view.model for all my frontend specific models which are no enitites.

com.companyName.appName.view.form -> 
I use view.form for all my frontend specific forms which has to be submitted and validated.

com.companyName.appName.util -> 
I use util for utility stuff.
Run Code Online (Sandbox Code Playgroud)

我希望这能让您简要概述我如何为 spring-boot 应用程序构建我的包。但每个人都喜欢有自己的命名。所以要使其通用是非常困难的。