各位大佬光临寒舍,希望各位能赏脸给个三连,谢谢各位大佬了!!!
目录
1.Spring五大注解的使用约定
2.@Controller注解的特别之处
3.总结
1.Spring五大注解的使用约定
Spring的五大注解(@Controller,@Service,@Repository,@Component,@Configuration),除@Controller外,其余的注解在功能上是没什么区别的,甚至五大注解的源码都几乎是一样的,都使用了Component,如图:
这里我们就不看@Component了,比较它就是它本身。这里我们可以看到源码中是有value这个字段的。可以看出我们在五大注解后加上(名称)就可以修改这个类存储在容器中的名字,也就是Bean的名字。这里说的有些偏题了,我们回归正传,这五大注解的功能基本一样,那么为什么不用同一个注解来把类加入到容器中归Spring管理呢?这就涉及到我们五大注解的使用约定了。为了企业开发效率更加的高,实现高内聚低耦合,我们把业务分为三层,称为三层架构(表现层,业务逻辑层,数据层)。其中我们后端只需要做业务逻辑层和数据层。在业务逻辑层,我们还可以分出Controller(控制器,负责接收信息选择适当的业务)和Service(业务逻辑),数据层也就是DAO。我们需要根据上述分层来给我们的类注解,@Controller,@Service,@Repository分别对应的就是控制器,业务逻辑和数据层。然后我们还有些不属于这些层的小组件类和配置类,分别使用@Component和Configuration标注。当然这只是个约定,就算我们不遵守也不会出错,但是为了代码清楚明了,我的建议还是遵守这个约定。
2.@Controller注解的特别之处
@Controller和其他4大注解不同的是使用它可以被外界所访问。但是我们看上面的源码会发现,@Controller这个注解并没有什么特别的。这是因为Spring在启动时会特地关注@Controller这个注解,让其能被外界访问。
我们可以尝试一下,我们用我写的一个图书管理系统返回图书信息的一个代码来演示:
这里我们用的是@Controller
这里我们用的是@Service(任意选的一个,因为这四个都一样,质疑的哥们儿可以逐一试试)
所以我们可以验证之前的论点,@Controller这个注解,让其能被外界访问。大家在测试@Controller和其余注解的区别时一定不要在类上加@RequestMapping注解,因为@RequestMapping也被Spring赋予了被外界访问的权力。我刚开始测试的时候就是没有注意这个,导致我得出了@Controller和其余注解没区别的结论,但是在我多次改变测试环境排除外界干扰之后,得出了上述结果。所以我的这个经历能让各位明白当我们测试某个事物时,要尽量排除外界的干扰,才有可能得到事物的真实本质。
3.总结
这五大注解虽然本质都差不多,注意一下@Controller的使用即可,但是大家还是尽量要根据实际场景来使用,这样不仅能让我们的代码更加清晰明了,还能让我们更好地去开发一个项目。
制作不易,望各位大佬赏个脸,给个三连吧!!谢谢各位大佬了!!!