spring(二)IOC
一、接口及面向接口编程
接口
1.用于沟通的中介物的抽象化
2.实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。
3.对应Java接口即声明,声明了哪些方法是对外公开提供的
4.在Java8中,接口可以拥有方法体。
面向接口编程
1.结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层间仅依赖接口而非实现类。
2.接口实现的变动不影响各层间的调用,这一点在公众服务中尤为重要。
3.“面向接口编程”中的“接口”是用于隐藏具体实现和实现多态性的组件。
二、什么是IOC
1.IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。
2.DI(依赖注入)是其一种实现方式。所谓依赖注入,就是由IOC容器在运行期间,动态的将某种依赖关系注入到对象之中。
3.目的:创建对象并且组装对象之间的关系。
三、Spring的Bean配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" >
<bean id="oneInterface" class="com.csdn.ioc.interfaces.OneInterfaceImpl"></bean>
</beans>
public interface OneInterface {
public void save(String arg);
}
public class OneInterfaceImpl implements OneInterface {
public void say(String arg) {
System.out.println("ServiceImpl say: " + arg);
}
}
@RunWith(BlockJUnit4ClassRunner.class)
public class TestOneInterface extends UnitTestBase {
public TestOneInterface() {
super("classpath*:spring-ioc.xml");
}
@Test
public void testSay() {
OneInterface oneInterface = super.getBean("oneInterface");
oneInterface.say("This is the test.");
}
}
输出:serviceImpl say:This is the test.
四、Bean的初始化
1.基础:两个包
——org.springframework.beans
——org.springframework.context
——BeanFactory提供配置结构和基本功能,加载并初始化Bean
——ApplicationContext保存了Bean对象并在Spring中被广泛使用
2.方式,ApplicationContext
——本地文件
——Classpath
——Web应用中依赖servlet或Listener
五、Spring的常用注入方式
1.Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为。
2.常用的两种注入方式
——设值注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" >
<bean id="injectionService" class="com.csdn.ioc.injection.service.InjectionServiceImpl">
<property name="injectionDAO" ref="injectionDAO"></property>
</bean>
<bean id="injectionDAO" class="com.csdn.ioc.injection.dao.InjectionDAOImpl"></bean>
</beans>
——构造注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" >
<bean id="injectionService" class="com.csdn.ioc.injection.service.InjectionServiceImpl">
<constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>
</bean>
<bean id="injectionDAO" class="com.csdn.ioc.injection.dao.InjectionDAOImpl"></bean>
</beans>
下一篇: 你的能力我还不清楚
推荐阅读
-
安阳师范学院是一本还是二本?是几本?在全国排名多少位?
-
ASP+配置 — ASP+配置概念(二)
-
南华大学是一本还是二本学校?是几本?在全国排名多少位?
-
湖南涉外经济学院是一本还是二本学校?是几本?在全国排名多少位?
-
数据结构和算法 - PHP 如何实现用户二叉树排序需求
-
Spring Cloud Alibaba系列-第四节-创建生产者与消费者服务,注册到Nacos监控服务
-
Python学习笔记(二):面向对象编程小实例士兵突击封装案例
-
10.Spring Cloud Alibaba Nacos配置中心
-
Spring Boot整合MyBatis,自动生成DAO
-
算法与数据结构系列 ( 二 ) - 实现前的基础准备