Spring容器时产生Bean的工厂(BeanFactory),用于管理容器中的Bean。
1.IOC(控制反转)
通过BeanFactory找到相应的Bean,方法是getBean("id")
id:applictionContext.xml中配置的bean中的id属性
具体由谁来实现,具体操作中不实现,交由spring来进行处理(即class属性)
<bean id="" class="" />
2.DI(依赖注入)
让bean与bean之间以配置文件组织在一起,而不是以硬代码的方式耦合在一起
架构在里,应用起来清晰明了。
一切的框架,都是为了让您更关注于业务逻辑,而不为其他的事操心。
企业应用的项目你就知道IOC和AOP的强大了,小项目一般优势不明显。
现在到了spring3.x已经实现了注解形式,可以更加轻便的进行开发。
spring的IOC和AOP 模式
其实用spring最好的地方就是实现代码的复用。
首先spring的设计原则是非侵入性的,就是实际业务逻辑代码中感觉不到spring框架的存在,spring只是在其中起到一个实例产生的作用,然后把实例分配给需要的对象。这种设计的好事就是可以随时随地的把某个业务逻辑很轻松的从整个系统中抽离出来再在无任何修改的情况下用到其他系统中去。
然后就是切面的编程,这种设计是灵活的操作织入,例如你的某个业务逻辑是执行存款,存款这个业务之前之后都应该有某些附加操作,例如用户登录,检查余额,记录存款日志信息,但是这些不能够放在存款主业务当中,这个时候就可以用面向切面的方式灵活织入到存款业务中,但是这个过程有不需要改变原存款业务代码和逻辑实现。如果将来某个时候这些副业务刚改,例如我不想记录存款日志信息,但是我又要加入打印出存款细节的附加操作,这个时候只要把记录日志剥离出来,再植入打印功能。同样不需要更改源代码。
spring这些设计的终极目标就是避免同样或者相似功能在不同系统中的重复开发而设计的
(1)web Service在启动时都会将一些配置文件中定义的bean都实例化装载进去,这跟我们在使用时,通过new再实例化这个bean的对象然后使用有什么区别,(性能跟快,或还有其他什么优点)
回答:
首先
配置文件中定义的bean并不是都在启动时实例化。
<bean id="accountService" class="com.foo.DefaultAccountService" scope="singleton"/>
注意bean有一个属性scope,只有在scope没有配置或配置为如上时,启动时才实例化。(如果一个singleton的bean依赖一个 prototype的bean,那么这个prototype的bean在singleton的bean实例化时也会实例化)
如果定义为scope="prototype"那么只有在这个bean被使用时,才实例化,而且每次都是一个新对象,不是单例。
其次:
在配置文件中声明bean使得spring可以管理这些bean,比如声明式事物功能,就需要你的bean在配置文件中配置。在实例化时 spring会为你声明的bean生成一个代理对象,代理对象在调用bean的方法前后加上事务控制逻辑。
备注:spring管理bean这样在bean初始化过程中,spring可以做很多事情,比如你写一个pojo,spring通过配置就能让他成为rmi,就是在实例化过程,对这个pojo做了更多的处理,不只是简单的new一个对象出来。
在比如只有spring管理的bean才支持spring的AOP机制。可以使用Aspectj和spring集成,对非spring管理的 bean施加AOP
再次:减少代码中依赖耦合。
(2) 同样的在配置文件中我们可以ref另外一个bean,这样做又是为什么呢?(我们同样可以使用时new一个这个实例)
回答:
把依赖关系定义在配置文件中。
不要再代码中表现依赖关系,这样在依赖关系有变化的情况下,可以通过配置文件的修改达到目的,而不需要修改代码。
分享到:
相关推荐
深入理解spring cloud与微服务构建 pdf高清完整版下载 带目录
spring 事务管理的理解
方志朋版——深入理解Spring Cloud与微服务构建,学习 Cloud可以看下,内容不太深
这是对spring_hibernate_struts2的理解,可以在面试中简要的抓住重点进行陈述。
用一个小项目模拟出一个微型的spring项目,实现spring的核心功能-aop,ioc和自动注入,帮助初学者了解spring的运行原理,以后面试再也不怕碰到问spring原理的问题了
《深入理解Spring Cloud与微服务构建》word版本
Spring Cloud作为Java语言的微服务落地框架,在Spring开源社区和Pivatol、Netflix两大公司的推动下飞速发展,得到了众多开发者的认可,Spring Cloud在未来很可能成为微服务框架的领导者和规范。
下面关于Spring的说话正确的是(B C)(选择两项) )Spring是一个重量级的框架 )Spring是一个轻量级的框架 )Spring是一个IOC和AOP容器 )Spring是一个入侵式的框架 )下面关于IOC的理解,正确的是(A B)...
《深入理解SpringCloud与微服务构建》_sample.pdf 《深入理解SpringCloud与微服务构建》_sample.pdf 《深入理解SpringCloud与微服务构建》_sample.pdf 《深入理解SpringCloud与微服务构建》_sample.pdf
Spring容器的通俗理解及简单写法 手动写一个非常粗犷且简单的IOC容器。 用到了java的一些基础知识,比如说读取文件资源,反射,自定义注解的实现及使用等
整理了一下spring的加载, 个人对于Spring的流程的理解,望多多指正
《深入理解Spring Cloud与微服务构建》学习笔记(八)~服务注册和发现 Eureka,可以直接运行参考
《深入理解Spring Cloud与微服务构建》从零开始详细讲解spring cloud,最后还有一个项目实例。 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
.相同点:在applicationConext.xml中 配置datasource-->sessionfacrtory from dataSource--->HibernateTransactionManager(impl)-->PROPAGATION_REQUIRED事物隔离级别 (2).不同点: HibernateDaoSupport: 在...
SpringAop的简单理解.pdf
帮助初学者理解spring框架,有助于提高代码能力java.sql.SQLException: Duplicate entry '2' for key 'PRIMARY' Query: insert into transaction values(?,?,?,?,?) Parameters: [2, 6212999999999, 转出, 6000000, ...
Spring Club 的例子希望能帮助大家理解spring club
Spring 开发的必备良师益友 帮您洞穿Spring
1. 深入浅出讲解Spring Cloud组件、开发工具、框架等知识点。 2. 使读者全面理解微服务的构建原理。 3. 实例丰富,解释清晰,易于读者真正理解原理,并学以致用。 4. 深入讲解Spring Cloud OAuth2,直击市场需求...
1.4 理解不同类型的依赖注入 1.4.1 问题描述 1.4.2 解决方案 1.4.3 实现方法 1.5 使用配置文件配置容器 1.5.1 问题描述 1.5.2 解决方案 1.5.3 实现方法 1.6 小...