美文网首页Java 杂谈
spring被忽略的精华-自定义注解

spring被忽略的精华-自定义注解

作者: 小鸡在路上 | 来源:发表于2019-05-05 22:37 被阅读4次

    从事java开发也有小几年的时间了,中间有一段时间由于公司的需要没有使用,直到最近项目的重构又用起来了。相信基本上java开发的同学都在不同程度上使用过spring,现在基本上面试也是一个必问的点。但是我通过这段时间和公司同事之间的配合开发,我发现一个问题。很大一部分人,都在追求新技术的使用,以会最使用最新的技术为荣。就拿最近火得一套糊涂的springboot来说。因为springboot以约定优于配置的理念,在很大程度上解放了我们的基础编码劳作。所以现在基本上不管项目大小,直接就是springboot搞起来。申明一下:这里我不是说springboot有问题。springboot确实在中小型项目上有着不可比拟的优势,不管在前期的项目工期还是在工作效率上都有很大的提升,一个注解就可以解决大部分问题。这就应了那句老话,物极必反 月满盈亏,因为协同开发不可避免需要接触同事之间的代码。很多人已经习惯了一个注解走天下的习惯。但是却没有了解他背后的实现,一旦遇见这个注解没有或者这个注解实现不了我们需要的业务时就不知所措了。

    就拿@service springboot中最常见的注解来说,很多人随手都能写出,作用就是加上这个注解在spring容器初始化的时候,会将注解在 这个类实例化对象在容器中。但是不知道大家有没有想过一个问题为什么会产生这个效果?还有就是它和@Component是什么关系?

    其实很多时候我们只需要在平时写代码的时候多一份好奇,就会发现原来世界其实还是很简单的。@service它的实现其实还是依靠@Component 因为我也没有深读spring的源码,但是从平时使用自定义注解的时候可以推测出,spring在容器初始化的时候会扫描带有@Component的类并将它们实例化,默认是以类名第一个字母小写。说到我又想到了自己开发的时候遇到的一个案例:当时我先类名的时候我的前两个字母都是大写的,而我默认有没有加名字,然后我按照往常的逻辑通过名字的第一个字母小写去获取实例时,却怎么也获取不到 知道我debug进去看spring容器中所有的对象名字我才发现,如果前几个字母都是大写,spring默认是不会将第一个字母小写,而是和类名不变。O(∩_∩)O哈哈~ 题外话。回归正题

    谈谈spring个人理解:
    首先spring为什么要定义这么多的注解。一方面是对于我们这种实力不够但是又想在这方面混口饭吃的人提供的一种接口,为什么说是接口 因为spring是一个不和业务耦合的框架,那么我们使用它来进行业务开发的时候,其实就相当于对spring做二次开发,在它定义的这个大框框里面。这也就是框架的由来。~~这里是我瞎说的
    其二 spring的源码其实也不少,那么怎么才能将这么多纵横交错的代码使他们之间不耦合不冲突。其实这里他也其到了不可忽视的作用。当然最重要的是spring的整体的架构设计,因为我还没有达到能指手画脚它设计的地步。这里我就不评述。
    其实从上面我们就可以看出spring设计注解的用意,一方面提供指导一方面解耦。在我们现实开发中,其实这两个因素往往能决定一个项目能走多远。既然注解有这么多的优点为什么在现实中的业务代码开发中,我却很少看到有能真正将注解和业务结合的案例。当然一方面是我的资历问题可能接触的少,可能这也体现了像我这样处于中下阶层的大部分编码人的一个现状。安于现状。这也从侧面说明了大部分优秀的开源项目都是国外提供的原因吧。

    总结

    今天的文章没有代码,写这篇文章,是对自己的一个警示。并不是说我们怎么怎么。如果能明白我的意思的同学,我想是应该懂得。如果不懂得那就当看个笑话吧。

    相关文章

      网友评论

        本文标题:spring被忽略的精华-自定义注解

        本文链接:https://www.haomeiwen.com/subject/aoukoqtx.html