Spring_IOC 个人理解整理

本贴最后更新于 1452 天前,其中的信息可能已经时移世改

spring 简单介绍之 IOC

Spring IOC

一. IOC(控制反转)

原来由 java类,new()对象 的方式;
把创建对象、调用对象的过程交付给 spring,由 Bean 来创建对象。
底层原理
xml解析(dom4j)+ 工厂模式 + 反射

ApplicationContext(BeanFactory)接口
IOC容器 的核心接口(实例化、定位、配置应用程序中的对象,建立对象的依赖)。

以下接口:
BaenFactory(顶级接口)
内置的使用接口,只有简单的功能。
加载配置文件时,不会创建对象,在获取或使用对象时,才创建对象。

ApplicationContext,继承实现了 BeanFactory
提供更强大的功能、更多的扩展。
在启动时,就把配置文件中的 Bean 全部实例化。

二. DI(依赖注入)

有参构造:<constructor-org>
set 方法:<property name="" value="">,使用 外部bean;加上 ref=""
p:命名空间<bean p:name="">

三. Bean

通过 bean标签 来创建对象
<bean id="" class="">
id 唯一表示,class 指定的类(包名.类名)

3.1. Bean 生命周期

  1. 无参构造创建实例
  2. set 注入属性
  3. 初始化 init()
  4. 普通方法
  5. 销毁 destory()

3.2. Bean 作用域

  1. 单例(默认)singleton
    两个对象的地址是一样的,<bean id="" class="" scpoe="singleton">
  2. 原形,每次都会创建一个新的 propertype
    <bean id="" class="" scpoe="propertype">

3.3. Bean 懒加载

默认加载配置文件时,就初始化所有的 bean
配置 按需加载Bean:
<beans default-init-lazy="true"> ,在 bean 根目录的最后。

3.4. Bean 创建对象

  1. 有参和无参
  2. 静态工厂方法
  3. 实例工厂方法
  4. 实现 FactoryBean 接口:简单的工厂模式 + 装饰模式,对象是有 getObject() 方法决定。

3.5. 集合/utils

  1. utils
<utils:list id="myList">
        <value>list1</value>
        <value>list2</value>
        <value>list3</value>
</utils:list>
  1. List和Set
<property name="list" ref="myList"/>

<property name="list" >
        <list>(set)
             <value>list1</value>
        </list>
<property>
  1. Map
<property name="map" >
        <map>
             <entry key=“k1”  value="v1"/>
        </map>
<property>
  1. Property
<property name="prop">
       <props>
            <prop key="k1">v1</prop>
       </props>
</property>

3.6. 外部配置文件(数据库连接)

<context:property-placeholder   location="classpath:db.properties"/>

<bean id="" class="">
       <property name="dirver" value="{jdbc.dirver}">
        ......
</bean>

四. 自动装配

spring 会自动根据匹配的属性进行注入。

  • byName
  • byType
  • no
  • default
  • constructor

注解 @

  1. 使用在类、方法、属性上面
  2. 类(4 个语义化注解)
  • @Controller;servlet
  • @Service;业务
  • @RepositoryDao、Mapper
  • @Component;其他公共类
  1. @AutoWire
    Service层 要使用 Dao层 的方法:
    service层 中使用自动装配:
@AutoWire
private UserMapper userMapper;

注意
.xml文件中 要配置包扫描
<context:component-scan base-package="扫描的包名"/>

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...