前记
由于接手一个项目,用到spring。用了一段时间,基本上是依葫芦画瓢,有很多地方一知半解。
最近看了一下相关的书籍,算作是实践过后重新来补理论,有些不懂的地方豁然开朗。记下,记下。当然,肯定有很多说得不对的地方,请高手看到了不妨提醒一下。
(1) 困惑:在使用spring的依赖注入的时候,由于一个service里面用到了很多其他java 实例的属性,不明白哪些属性
需要依赖注入,哪些不需要。
原因:没有弄明白依赖注入会带来什么,即为什么要用到依赖注入。
解惑:一般,当某个java实例需要另一个java实例时,通常会由调用者自己来创建被调用者的实例。而在依赖诸如
的模式下,这个创建过程不需要由创建者来完成。这样就使各种组件不需要以硬编码方式耦合在一起,使对
象与对象中间的具体实现互相透明。
有个很好的例子可以充分说明依赖注入的好处:一个人(java实例)需要一把斧子(java实例)。
原始社会:需要斧子的人只能自己去磨一把斧子,即java程序里的调用者自己创建被调用者。
工业社会:斧子由工厂生产。此时需要斧子的人只需找到工厂,购买斧子。即调用者只需定位到工厂,无须
知道被调用者的具体实现。
共产社会:需要斧子的人无须定位到工厂,“坐等”社会提供即可。而依赖注入就是共产社会。
那么回到最初的困惑,到底哪些属性是需要依赖注入的,哪些是不需要的呢?在明白了依赖注入会带来什么
好处之后,这个问题就很清楚了。这里排除那些值注入的除外,当某个属性对应java实例其实现细节一直在
变,调用者可能因为被调用者的实现细节的变更进而影响到自身也要变的话,这个时候就需要依赖注入,让
他们之间解藕。
(2) 困惑:为什么依赖注入的属性其声明类都是接口呢?
解惑: 这依然是为了解藕。这也是spring提倡的面向接口编程所带来的好处,就是解藕嘛。
分享到:
相关推荐
Spring 事务配置解惑.html 抓下来打包成了HTML文件, 方便离线观看
讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读。
14. **Spring框架**:Spring是Java开发中最流行的应用框架,包括依赖注入、AOP(面向切面编程)、MVC等模块,广泛应用于企业级应用开发。 15. **并发编程**:Java并发库提供了丰富的工具,如ExecutorService、...
以上只是Java编程中的一部分知识点,实际上Java还有许多其他领域,如Spring框架、JDBC数据库操作、JPA实体映射、Maven构建工具、单元测试等。"Java解惑"这本书或者资源可能包含了这些内容的详细解答,通过学习和实践...
7. **枚举与注解**:枚举类型提供了一种安全的常量表示方式,而注解可以为代码添加元数据,用于编译时或运行时的代码处理,如Spring框架中的依赖注入。 8. **设计模式**:Java中常见的设计模式如单例、工厂、观察者...
12. **注解(Annotation)**:注解可以用于元编程,例如Spring框架中的@Component、@Autowired等,理解其工作原理和自定义注解的创建。 13. **模块系统(Jigsaw)**:Java 9引入的模块系统,帮助管理和组织大型项目...
10. **框架知识**:如Spring框架的IoC和AOP原理,MyBatis的使用,以及MVC架构的理解。 11. **数据库知识**:SQL语句的编写,事务的ACID属性,索引的原理,以及数据库的连接池管理。 12. **网络编程**:TCP和UDP...
—SSM框架(Spring MVC+Spring+MyBatis)和Redis实现----源码.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域...
最后,如果你有Spring框架或微服务相关的经验,那么Spring Boot、Spring Cloud、Spring Data JPA等技术的原理和实践也会是面试的重点。 总之,"JAVA面试题解惑系列合集"涵盖了Java开发者需要掌握的广泛知识,通过...
10. **Spring框架**:作为Java企业级应用最广泛使用的框架,Spring提供了依赖注入、AOP(面向切面编程)、事务管理等功能,深入学习Spring可以帮助开发者构建复杂的后端服务。 以上只是Java编程中的一部分重要知识...
3. **Spring框架**:讲解Spring的基本概念,如IoC和AOP,以及Spring Boot和Spring Cloud的应用。 4. **JUnit测试**:如何进行单元测试,提高代码质量。 5. **数据库操作**:JDBC的使用,以及ORM框架如Hibernate和...
12. **Spring框架**:理解依赖注入(DI)和面向切面编程(AOP),以及Spring Boot、Spring MVC和Spring Data的相关知识。 13. **数据库操作**:JDBC基本操作,事务管理,以及连接池的使用(如C3P0、DBCP、HikariCP...
此外,Java EE(企业版)部分,如Servlet、JSP、JDBC、EJB、Spring、Hibernate等,是Java在Web开发中的重要应用。而Java SE(标准版)的最新特性,如Lambda表达式、Stream API、Optional类等,也是现代Java编程的...
以上内容只是Java知识体系的冰山一角,实际学习过程中,还需要结合实际项目经验,不断探索和掌握更高级的概念,如设计模式、并发编程、Spring框架、MyBatis、JPA等,以提升自己的Java开发技能。"java解惑.doc"文档...
黑马程序员Java微服务项目《黑马头条》快速开发全套视频教程,基于SpringBoot+SpringCloud+Nacos等企业级微服务架构项目解决方案 《黑马头条》项目采用的是SpringBoot+springcloud当下最流行的微服务为项目架构,...
Java面试题解惑系列是为准备Java面试的开发者量身打造的一份宝贵资源,它涵盖了Java编程语言的基础、进阶以及实战应用等多个方面。在这个系列中,你可以找到一系列常见的面试问题,这些问题通常用来评估候选人的编程...