最近的项目用的是spring+maven+mybatis框架,开始接触时,对于注解Autowired一点没有感觉,压根就是照抄项目中的其他代码。
不断地用,不知不觉中对“注入”这个概念有了感觉。
java中用到某个方法时,首先需要new这个对象,即便是static方法,你也需要调用这个类,而后使用这个类的static方法。
即:提供数据或者功能的只能是一个对象或者类,而没有其他。
mybaits中所谓的注入,就是自动生成对象。
你只需要告诉我,返回的类型是什么,mybatis便自动返回这种类型的对象,你无需关心sql语句查出来的结果是如何填充进list或者怎么转变成String类型的。
这就像一个模子,你提前准备好了各种材料,约定了制作的流程,当你需要时,这台机器(mybatis)就会自己运转起来,生产出你需要的产品(对象)。
有了这个概念之后,就能理解,为什么实体类需要在mybatis.xml文件中说明。这其实也很简单,项目加载时期,mybatis会扫描所有的xml文件中需要用到的实体类,而后匹配mybatis.xml声明的包中的类,当然,一些简单的int、string等是不需要声明的。
之前还曾遇到过一个问题,从数据库读取出来的数据转化成int类型时,由于数据长度而报错。
其实对于mybatis来说,所有在转化为java数据时,都把这些数据看成String类型的,之后调用java的各个基本类型的强制转换方法罢了。转换期间如果出现了某些java语法错误,会一直报错,直到传递给mybatis这一层级。
不得不说,这是一个面向切面的编程思想,但同样也可以理解成面向对象的。所谓面向切面,意思是它只关注数据这一层面,所有数据往下的层面已经封装好了,编写代码时无需关心具体是如何实现的。
但实际上,这同样是面向对象的封装特性,说白了,就是减少重复代码,尽可能用机器代替重复的无意义的算法。
再往下讨论这个一个问题:什么样的代码是可以封装的?封装什么样的代码才有意义?
个人认为,与上一步骤有着很强的分离特性的代码是应该封装的。
两个比较简单的例子:dataTbale和Echarts所需要的数据,一般写代码都会去封装这两个类,因为这两个类最终是传递给jsp页面进行填充的,不可能每一次都重写一遍option。
封装代码的意义,其实在于增强代码的逻辑性,
使得一个大括号内部的代码,在外人看来,是一个层面的东西。
正是这么一个横向上看比较顺理成章的东西,才大大增加了代码的逻辑性以及可读性。其实这也是社会分工的必然结果。
比如你需要到营业厅充话费,对于你来说,很自然的流程是从ATM机中取钱,坐公交,走进营业厅把钱交给业务员。这三者对于消费者来说,是同一层面的东西。至于ATM机如何工作、又是如何生产、如何设计的,他并不关心;同样消费者也不关心公交车是怎么运转的、营业员拿到自己的钱之后如何关联手机号等等一系列复杂的过程。
其实正是因为社会分工,才使得这个社会得以高效的运转。
而写代码,其实也正是基于这个简单的原理。
不断地调用别人提供的服务,最终实现自己的价值。
其他人对我们来说,是服务的提供者和消费者,我们对于其它人来说,也同样是服务的提供者和消费者罢了。
就码农而言,需要的服务大部分是免费的,而自己提供的服务,在如今的社会,报酬也还算可以,其实是一个比较讨巧的职业。
有人说码农是一碗青春饭,我一直觉得这是对这个行业很浅薄的认识。没有用过那么多的框架,你怎么知道那几种服务的组合更适合自己的需求?
就发展方向而言,工具用多了,自然可以成为工具的生产者;框架用多了,可以随心所欲的组合设计框架。跳出这个圈,认识的码农多了,亦可成为程序猿的提供者。
那些所谓码农只能转行做管理的经验之谈,我更觉得,是他们自己在这个行业上压根就没达到一个高度,所以当到了精力衰退的年龄,只能倚老卖老地去卖卖经验罢了。
分享到:
相关推荐
O'Hallaron合著,以其深入浅出的讲解方式和实用的编程视角赢得了广泛赞誉。 本书的核心知识点包括: 1. **计算机体系结构**:介绍了计算机硬件的基本组件,如CPU、内存、I/O设备等,以及它们如何协同工作。探讨了...
Angular应用启动时会自动生成一个根注入器,而模块和组件也会有自己的注入器,形成了一个层次结构。 服务注册有多种方式: 1. 在服务类上使用`@Injectable()`装饰器,并通过`providedIn`属性指定注册位置。 2. 在...
《高清深入浅出MyBatis技术原理与实战》是一本深度剖析MyBatis框架的书籍,旨在帮助读者全面理解MyBatis的使用方法、优化策略以及底层架构。这本书覆盖了从基础到高级的各种主题,适合不同层次的开发人员学习。 ...
《深入理解计算机系统》(英文原版为"Computer Systems: A Programmer's Perspective", 简称CSAPP) 是一本广受赞誉的计算机科学教材,它深入浅出地讲解了计算机系统的各个方面,包括处理器架构、编译器、内存系统、...
总的来说,“挖空”是Photoshop中一个强大的视觉表现手法,它允许设计师创造出独特的透明和半透明效果,使图像层次感更加丰富,为作品注入更多的艺术魅力。通过深入理解和实践,设计师可以更好地利用这一功能,提升...
这本书《深入浅出MyBatis技术原理与实战》由杨开振编著,旨在帮助初学者系统地理解和掌握MyBatis,提升到精通的层次。 首先,MyBatis的核心概念包括XML配置文件和注解方式。XML配置文件是MyBatis的传统方式,用于...
《深入浅出Android》这本书是Android开发者不可或缺的参考资料,它以深入浅出的方式全面解析了Android平台的各个方面,旨在帮助读者从基础知识到高级技术都能有扎实的理解。以下将围绕书中的核心知识点进行详细阐述...
《浅谈钢琴曲《浏阳河》的演奏方法》 钢琴曲《浏阳河》源自中国湖南的传统民歌,以其优美的旋律和深沉的情感深受广大音乐爱好者的喜爱。这首曲目的演奏方法不仅需要对音乐的理解,还需要精湛的技巧与情感的投入。...
这意味着教师不仅需要精通历史知识,还应该能够跟踪学科的发展动态,从更高的层次去理解和解读教材。教师不应局限于课本,而应鼓励学生对已有知识进行深入挖掘,培养他们的探究精神和创新能力。同时,教师需要不断...
在欣赏时,既要有共性的审美认知,也要有个性的解读,这样才能真正领悟作品的内涵,从而在自己的创作中注入深层次的意蕴。\n\n总之,美术教学要引导学生超越表面的技巧,去感受作品的内在生命,通过意境的构建和情感...
《深入浅出Hibernate示例源代码》是由知名IT专家夏昕编写的,旨在帮助开发者深入理解和应用Hibernate这一Java持久化框架。Hibernate是一个强大的对象关系映射(ORM)工具,它简化了数据库操作,使得开发人员可以更...
《RFID安全浅谈》是关于网络攻防实训的一个重要话题,主要涵盖了Web安全的相关领域。RFID(Radio Frequency Identification)技术,即无线射频识别,已经在诸多领域得到广泛应用,如物流、零售、医疗等。然而,随着...
在现代设计中,这些图案可以作为重要的元素,为作品注入独特的韵味和深度。 首先,论文阐述了传统图案的美学特征。传统图案通常具有对称性、节奏感和和谐之美,体现了古人对于自然、宇宙的理解和敬畏。例如,中国的...
吴昌硕,晚清民国时期的一位杰出艺术家,以其深厚的篆刻、绘画和书法造诣...通过深入学习和研究吴昌硕的石鼓文书法,我们可以更好地理解和欣赏这一独特的艺术形式,同时也能从中汲取灵感,推动书法艺术的创新与发展。
.NET三层架构是一种常见的软件开发模式,它将应用程序的复杂性分解为三个独立的层次,分别是表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种架构设计有...
室内设计不仅仅是关于色彩、材质和布局,更是关于创造一个能够反映居住者或使用者生活方式和价值观的空间。地域文化能够为设计提供丰富的灵感,例如,中国传统文化中的对称美学、禅意哲学,以及江南水乡的婉约风格,...
本书覆盖了Spring框架的基本概念、核心功能以及高级特性,适合于不同层次的Java开发者。 ### Spring框架简介 Spring框架是由Rod Johnson创建的一个开源框架,最初源于他的著作《Expert One-On-One J2EE Design and...
它将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。本教程以C# .NET为背景,旨在帮助初学者理解并实践这种架构。 1. 表现层...
在实际教学中,教师应采取科学的方法进行节奏训练,比如分层次教学,针对不同水平的学生设计适宜的训练内容,逐步提升他们的节奏把握能力。同时,引入游戏化教学,使节奏训练变得更加有趣和互动,激发学生的学习兴趣...
通过远、中、近三个层次的景观布局,以及俯视、仰视、混合视和划越视等不同视角的运用,设计师可以创造出丰富多样的视觉效果。同时,视觉互动,如看与被看,使人成为景观的一部分,增强了景观的动态感。 其次,听觉...