识别Spring MVC架构模式

时间:2015-04-16 15:55:17

标签: spring model-view-controller architecture

我正在通过一个春季mvc视频系列并且喜欢它!

我想了解更多有关正在使用的确切架构的细节,并且无法确定正确的名称 - 以便我可以进一步阅读。

例如,我理解表示层是MVC,但不确定如何更具体地描述模式来考虑使用服务和资源对象 - 而不是选择使用服务,DAO和Domain对象。

有哪些线索可以帮助我更好地专注于理解下面的布局?

application
  core
     models/entities
     services
  rest
     controllers
     resources
        resource_assemblers

修改 Nathan Hughes的评论澄清了我与命名法的混淆,SirKometa连接了​​我没有掌握的建筑点。多谢你们。

3 个答案:

答案 0 :(得分:4)

据我所知,您提到的布局代表了通过REST服务与世界通信的应用程序。

如果这是您正在寻找的答案,请告诉我。

答案 1 :(得分:2)

This question可能对您和this explanation感兴趣。

在每种情况下,你大多都在谈论相同的事情,Spring只是使用注释,这样当它扫描它时,它知道你正在创建或实例化的对象类型。

基本上所有请求都通过使用@Controller注释的控制器流动。每个方法处理请求并(如果需要)调用特定服务类来处理业务逻辑。这些类使用@Service进行注释。控制器可以通过在@Autowire中自动装配它们来实例化这些类,或者为它们提供资源@Resource。

@Controller
@RequestMapping("/")
public class MyController {

    @Resource private MyServiceLayer myServiceLayer;

    @RequestMapping("/retrieveMain")
    public String retrieveMain() {

        String listOfSomething = myServiceLayer.getListOfSomethings();
        return listOfSomething;
    }
}

然后,服务类执行其业务逻辑,并在需要时从使用@Repository注释的存储库类中检索数据。服务层以相同的方式实例化这些类,方法是在@Autowire中自动装配它们或为它们提供资源@Resource

@Service
public class MyServiceLayer implements MyServiceLayerService {

    @Resource private MyDaoLayer myDaoLayer;

    public String getListOfSomethings() {

        List<String> listOfSomething = myDaoLayer.getListOfSomethings();
        // Business Logic
        return listOfSomething;
    }
}

存储库类组成DAO,Spring对它们使用@Repository注释。实体是@Repository层接收的各个类对象。

@Repository
public class MyDaoLayer implements MyDaoLayerInterface {

    @Resource private JdbcTemplate jdbcTemplate;

    public List<String> getListOfSomethings() {

        // retrieve list from database, process with row mapper, object mapper, etc.
        return listOfSomething;
    }
}

@ Repository,@ Service和@Controller是@Component的特定实例。所有这些层都可以使用@Component进行注释,最好将其称为实际内容。

所以回答你的问题,他们的意思是一样的,他们只是注释让Spring知道它实例化的对象类型和/或如何包含另一个类。

答案 2 :(得分:0)

我想您正在寻找的架构模式是 Representational State Transfer(REST)。你可以在这里阅读:

http://en.wikipedia.org/wiki/Representational_state_transfer

在REST中,传递的数据称为资源:

  

资源识别:   在请求中标识单个资源,例如在基于Web的REST系统中使用URI。资源本身在概念上与返回给客户端的表示分开。例如,服务器可以从其数据库发送数据,如HTML,XML或JSON,其中没有一个是服务器的内部表示,并且它是相同的一个资源。