目的:设计原则,解耦组件之间的依赖关系。降低耦合度
好处:
B、C类具有相同的方法、不同的实现。A类需要调用B或C类的方法
具体的设计模式,体现Ioc设计原则
DI是Ioc的最典型的实现,不能混用
setter
注入[Spring实现]
setter
注入 的缺点setter
注入
已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。
创作人:Rod Johnson
Spring容器体现了IoC原理
Spring容器通过读取配置元数据负责对Beans实例化、配置、装配
元数据:通过容器使用配置来反应Beans和他们之间的依赖关系
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- xml配置 -->
<!-- id叫什么都可以 -->
<!-- class为完整的包名+类名 -->
<bean id="IntelCpu" class="com.pc.IntelCpu"></bean>
<!-- 依赖注入 -->
<!-- ref对应依赖注入id -->
<bean id="Computer" class="com.pc.Computer">
<property name="cpu" ref="IntelCpu"></property>
</bean>
</beans>
在xml文件中进行注解配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 注解配置 -->
<context:annotation-config />
<context:component-scan base-package="com.pc"></context:component-scan>
</beans>
在类中加入注解
类 | 注解 |
---|---|
依赖组件类 | @Component |
调用依赖类 | @Component("Computer") |
依赖组件 | @Resource |
@@Component
默认将类名小写,可以通过@Component("Computer")进行自定义
注解类的注解不变
在测试类注解
@Configuration
@ComponentScan("包名")
调用
ApplicationContext ac = new AnnotationConfigApplicationContext();
//类 class = (类)ac.getBean("注解的类名字");
//class.方法();
annotation 注解
application 应用
component 组件
config 配置
configuration 配置
context 上下文环境
property 财产、所有权
scan 扫描、浏览
原文:https://www.cnblogs.com/occlive/p/13538735.html