为了账号安全,请及时绑定邮箱和手机立即绑定

专题一:IOC ---- Spring入门

标签:
Java

专题一 IOC

主要内容

  1. 接口及面向接口编程
  2. 什么是 IOC(控制反转):控制权转移,应用程序本身不负责
  3. Spring的 Bean 配置
  4. Bean 的初始化
  5. Spring 的常用注入方式

接口及面向接口编程

接口

  • 接口即声明,声明哪些方法对外提供。
  • 使用接口沟通,使其能被修改内部而不影响外部其他实体的与其交互的方式(Java8中接口可以拥有方法体)

面向接口编程

  • 结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能的接口,各层仅依赖接口而非实现类
  • 接口内部的实现变动不影响各层之间的调用,这一点在公共服务中尤为重要
  • “面向接口编程”中的“接口”是用于【隐藏具体的实现】和【实现多态性的组件】(2点)

什么是IOC

  • IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
  • DI(依赖注入)是其一种实现方式。(获取依赖对象的过程被反转,过程由自身管理变为有 IOC 容器主动注入,即依赖注入)
  • 目的:创建对象并且组装对象之间的关系

下图为 Spring 官网给出的 IOC 说明
IOC说明图

Spring 的 Bean 配置

配置一般存放于 spring-ioc.xml 文件中
举例

<?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.imooc.ioc.interfaces.OneInterfaceImpl"></bean>
</beans>

Bean 容器的初始化

  • 基础:两个包

    • org.springframework.beans
    • org.springframework.context
    • BeanFactory 提供配置结构和基本功能,加载并初始化 Bean
    • ApplicationContext 保存了 Bean 对象并在 Spring 中广泛使用
  • 3 中初始化方式:ApplicationContext
    • 本地文件
      FileSystemXmlApplicationContext context = new 
      FileSystemXmlApplicationContext("F:/workspace/appcontext.xml");
    • Classpath
      ClassPathXmlApplicationContext context = new 
      ClassPathXmlApplicationContext("classpath:spring-context.xml");
    • Web 应用中依赖 servlet 或 Listener
      web方式初始化

Spring 注入

  • Spring 注入指在启动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="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">
         <property name="injectionDAO" ref="injectionDAO"></property>
        </bean>

  <bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl"></bean>
</beans>

注意:需要在 Service 文件中添加 setInjectionDAO 方法。property 中 name 对应 set*

构造注入

<?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.imooc.ioc.injection.service.InjectionServiceImpl">
               <constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>
        </bean>

  <bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl"></bean>
</beans>

注意:需要在 Service 文件中添加构造方法。name 对应 service 中 构造器参数名

点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消