Spring入门-IOC

≡放荡痞女 提交于 2020-02-03 00:12:17

导包 在这里插入图片描述第一个是用于注解的 idea会自动多导进来
四个核心(容器)jar包
最后一个是第三方(通过解压的形式会发现和idea的一样文件)

配置文件
1.加入约束(路径如下 找到自己的jar包)
spring-framework-5.0.2.RELEASE/docs/spring-framework-reference/html5/index.html进入网页再点击core

<?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">

    <!-- services -->

    <bean id="petStore" class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl">
        <property name="accountDao" ref="accountDao"/>
        <property name="itemDao" ref="itemDao"/>
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

2.把对象交给spring创建
之前解耦说了 这里需要配置两个标志 一是id二是全限定类名

获取容器对象
根据id获取bean对象
在这里插入图片描述其中有三种容器对象的实现类
在这里插入图片描述其中容器常用的有两个接口
在这里插入图片描述接下来就是调用创建bean里面的方法了

那么在调用bean里面方法的时候 其中Service是用new的方式创建Dao对象
在这里插入图片描述也是有依赖的 所以要解除这种依赖
那么就要讲讲(用下面讲的第二种和第三种方式)
bean的创建的几种方式
1.使用默认构造函数创建
在这里插入图片描述即创建service对象在Service类里面必须有默认的空参构造函数 否则无法创建
2.使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)
在一些情况下,我们可能要用到别人定义好了的类(jar包里面以及封装好的类)我们是无法修改(.class字节码文件)以及也不知道里面是否有默认的构造方法,所以不能用第一种方法
在这里插入图片描述比如模拟这个是个配置好的class文件,里面有个方法是获得service对象的方法
在这里插入图片描述单纯配置这个类是没有用的,因为只有这个工厂类的实例化 我们要的是调用它里面的方法 返回的对象,所以用到了普通工厂获得bean
在这里插入图片描述这里要配置好两个属性factory-bean和factory-method
3.使用工厂中的静态方法创建对象(使用某个类中的静态方法创建,并存入spring容器)
在这里插入图片描述在这里插入图片描述因为是静态的 所以class写那个静态类 method写静态方法就会自动返回service对象

bean的作用范围调整
在这里插入图片描述bean对象的生命周期
在这里插入图片描述和上面的BeanFactory和ApplicationContext一样,一个是多例,一个是单例

几种注入方式
1.spring中的依赖注入
在这里插入图片描述依赖注入:能注入的数据
1.基本类型和String
在这里插入图片描述定义一个有各种类型的类,来展示如何注入进去基本类型的变量和String(最好是不经常变化的变量)
在这里插入图片描述在这里插入图片描述其中先展示用type注入,要表明数据类型,再用value赋值(注入)
index就是用索引,参数表中从左到右
name是最常用的,就是直接指定
value是设值(即注入),是基本数据类型
ref也是设置,是引用数据类型,比如这里Date不是基本类型,就要引用Date
在这里插入图片描述1.Set方法注入
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
注意:
这个name标签里是写 类里面set方法中Set后面 把首字母小写的名字 而无关成员变量名字
还有value和ref标签用法一样都是 value是基本类型和String ref是引用类型
3.复杂类型的注入
在这里插入图片描述
String[]:在property子标签里面定义array标签,再在子标签里面定义value(值)
在这里插入图片描述
List<>:子标签是list
在这里插入图片描述
Set<>:子标签是set
在这里插入图片描述
Map<>:子标签是map;其中map有key和value两个值 所以还有个entry标签,而且它有两种写法
在这里插入图片描述
Props:子标签props 且只有一个key的值
在这里插入图片描述注意:String[] , List<> , Set<>三种类型结构类似 其中他们的子标签可以互换
同理Map和Props也是一样,子标签可以呼唤

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!