Spring:IOC

来自Wikioe
Eijux讨论 | 贡献2020年10月28日 (三) 14:02的版本 →‎Bean的管理:XML
跳到导航 跳到搜索


关于IOC

IOC:Inversion of Control 控制反转,指的是对象的创建权反转(交给)给Spring,作用是实现了程序的解耦合。

IOC 的底层实现原理.jpg


下载:


Spring 目录结构:

  • docs:API 和开发规范
  • libs:jar 包和源码
  • schema:约束


相关jar:

IOC相关jar包.jpg
即“core container”的四个部分;
SpringFramework Runtime.jpg

使用示例

  1. 创建web 项目
  2. 引入Spring 的开发包
  3. 相关配置文件:
    1. log4j.properties:日志配置
    2. applicationContext.xml:Spring配置文件:
      • (配置说明,位于包的doc中:“spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html”)
      <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">
      </beans>
      
  4. 编写相关的类:
    public interface UserDao {
       public void sayHello();
    }
    public class UserDaoImpl implements UserDao {
       @Override
       public void sayHello() {
          System.out.println("Hello Spring...");
       }
    }
    
  5. 完成配置:
    <!-- Spring 的入门案例 -->
    <bean id="userDao" class="cn.itcast.spring.demo1.UserDaoImpl"></bean>
    
  6. 编写测试程序:
    @Test
    // Spring 的方式:
    public void demo2(){
       // 创建Spring 的工厂类:
       ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
       // 通过工厂解析XML 获取Bean 的实例.
       UserDao userDao = (UserDao) applicationContext.getBean("userDao");
       userDao.sayHello();
    }
    


Spring 中的工厂

  • BeanFactory :是在getBean 的时候才会生成类的实例.
  • ApplicationContext :在加载applicationContext.xml 时候就会创建.

ApplicationContext

ApplicatioContext 接口有两个实现类:

  1. “ClassPathXmlApplicationContext”:加载类路径下Spring 的配置文件;
  2. “FileSystemXmlApplicationContext”:加载本地磁盘下Spring 的配置文件;

ApplicatioContext 接口的两个实现类.jpg

BeanFactory

Spring的工厂.jpg

Spring 的相关配置

  • id:唯一确定一个Bean(唯一性约束),必须以字母开始,可以使用字母、数字、连字符、下划线、句点、冒号,不能出现特殊字符;
  • name:Bean的名称(没有唯一性约束),name可以使用特殊字符;如果<bean>没有id 的话, name 可以当做id 使用;
    • 整合struts1 的时候:“<bean name=”/loginAction” >”;
  • scope:Bean 的作用范围;
    • “singleton”:(默认)单例;
    • “prototype”:多例;
    • “request”:WEB 项目中,Spring 创建一个Bean 的对象,将对象存入到request 域中;
    • “session”:WEB 项目中,Spring 创建一个Bean 的对象,将对象存入到session 域中;
    • “globalSession”:WEB 项目中,应用在Porlet 环境.如果没有Porlet 环境那么globalSession 相当于session;
  • Bean 的生命周期的配置:通过配置<bean>标签上的“init-method”作为Bean 的初始化的时候执行的方法,配置“destroy-method”作为Bean 的销毁的时候执行的方法。
    • 销毁方法想要执行,需要是单例创建的Bean;而且在工厂关闭的时候,Bean 才会被销毁.

(配置提示)

  1. 复制约束(applicationContext.xml):“http://www.springframework.org/schema/beans/spring-beans.xsd”
  2. 添加eclipse的“XML Catalog”:
    Eclipse配置提示XML Catalog.jpg
    Eclipse配置提示XML Catalog添加.jpg

Bean的管理:XML

Bean的管理:注解

Bean的依赖注入(DI)

DI(Dependency Injection):依赖注入,使用IOC创建类的过程中,将类所依赖的属性设置进去。