SpringFrame-ioc 依赖注入

简介: SpringFrame-ioc 依赖注入

一、安装使用maven

Maven是Java平台下的一款项目构建和依赖管理的自动化管理工具。安装使用maven,简化了各种包的导入,使用Maven之前的传统web项目必须将该项目所依赖的一些jar 包添加到工程目录中,否则项目就不能运行,从而导致了工程很大。同样的项目,如果我们使用Maven 工程来构建,会发现总体上工程的大小会少很多。


两个经典作用:

依赖管理:maven 工程中不直接将jar 包导入到工程中,而是通过在pom.xml 文件中添加所需jar 包的坐标,这样就很好的避免了jar 直接引入进来,在需要用到jar 包的时候,只要查找pom.xml 文件,再通过pom.xml 文件中的坐标,到一个专门用于”存放jar 包的仓库”(maven 仓库)中根据坐标从而找到这些jar 包,再把这些jar 包拿去运行。

那么问题来了

项目的一键构建:通常的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。什么是构建?

指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。

一键构建指的是整个构建过程,使用maven 一个命令可以轻松完成整个工作。


二、依赖注入

依赖注入是一个过程,在这个过程中,对象仅通过构造函数参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖关系(即它们所使用的其他对象)。


三、注入形式

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--使用name也可以设置别名
       使用 空格或者,或者; 设置多个别名
       -->
    <!--使用import可以导入其他spring的xml配置文件
 <import resource="spring-ioc.xml"></import>-->
    <!--***************************依赖注入 Begin*************************************-->
    <!--基于setter方法的依赖注入
     注意: name属性对应的set方法的名字
            比如 setId    ->  name="id"    setXxx   -> name="xxx"
     -->
    <bean class="bobo.User" id="user">
        <property name="id" value="20"/>
        <property name="name" value="小波"/>
        <property name="realname" value="吴彦祖"/>
    </bean>
<!--    #####################分割线###################-->
    <!--基于构造函数的依赖注入
        1. 基于name属性设置构造函数参数
        2. 可以只有value属性
        3. 如果省略name属性 一定注意参数顺序
        4. 如果参数顺序错乱
             可以使用name,
             还可以使用index:设置参数的下标  从0开始
             还可以使用type: 在错乱的参数类型一致的情况下不能使用
    -->
    <bean class="bobo.User" id="user2">
        <constructor-arg name ="id" value="20"/>
        <constructor-arg name="name" value="小波波"/>
        <constructor-arg name="realname" value="成龙"/>
    </bean>
<!-- ####################分割线 ###############  -->
<!--    复杂数据类型的依赖注入-->
    <bean class ="bobo.Person" id="person">
        <property name="id" value="1"></property>
<!--        设置null-->
        <property name="name"><null></null></property>
        <property name="genter" value=""></property>
<!--        引用外部bean
        <property name="wife" ref="wife"></property>-->
<!--        使用内部bean 依赖注入其他bean-->
        <property name="wife">
                <bean class="bobo.Wife" id="wife">
                    <property name="age" value="18"/>
                    <property name="name" value="你好帅"/>
                </bean>
        </property>
        <!--list 注入:
                  如果泛型是基本数据类型<value>
                  如果泛型是bean  <bean>-->
        <property name="hobbies">
            <list>
                <value>唱歌</value>
                <value>跳舞</value>
            </list>
        </property>
        <!--map 注入
            如果value是基本数据类型<entry key="1" value="Java"></entry>
            如果value是bean  value-ref-->
        <property name="courese">
            <map>
                <entry key="1" value="java"></entry>
                <entry key="2" value="数据库"></entry>
            </map>
        </property>
    </bean>
    <!--使用p命名空间简化基于setter属性注入XML配置
            p:按Alt+Enter 自动加上命名空间
            设置基本数据类型   或者p:wife-ref 引用外部bean
            如果有集合类型 就不支持, 需要额外配置 <property>
        -->
        <bean class="bobo.Wife" id="wife1" p:age="18" p:name="wuhu"/>
        <bean class="bobo.Person"  id="person2" p:wife-ref="wife1">
            <property name="hobbies">
                <list>
                    <value>唱歌</value>
                    <value>跳舞</value>
                </list>
            </property>
        </bean>
    <!--使用c命名空间简化基于构造函数的XML-->
        <bean class="bobo.Wife" id="wife2" c:age="20" c:name="hhh" />
<!--    ###############依赖注入############-->
</beans>


相关文章
|
6月前
|
XML Java 数据格式
依赖注入~
依赖注入~
|
7月前
|
XML 开发框架 Java
Spring框架IoC控制反转
Spring是与2003年兴起的一个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。Spring是可以在Java SE/EE中使用的轻量级开源框架。 Spring的主要作用就是为代码"解耦",降低代码间的耦合度。就是让对象和对象(模板和模板)之间关系不是使用代码关联,而是通过配置来说明。即在Spring中说明对象(模块)的关系。 Spring根据代码的功能特点,使用IOC降低业务对象之间耦合度。IOC使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了,而是由Spring容器统一
53 2
|
11月前
|
设计模式 Java Spring
|
SQL 开发框架 安全
3.1依赖注入
传统开发中,对象都是开发者创建组装,开发者必须了解各类的使用方法且某些类的耦合度较高,例如想把sql serve数据库改为MySql数据库则需要更改某些代码。控制反转的目的是让框架完成对象的创建和组装。从“我创建对象”编程“我要对象”
|
XML 存储 Java
|
Java 程序员 数据库
依赖注入IOC
依赖注入IOC
|
自动驾驶 小程序 Java
什么是控制反转(IOC)?什么是依赖注入?
什么是控制反转(IOC)?什么是依赖注入?
什么是控制反转(IOC)?什么是依赖注入?
|
Java API C++
IOC理解
成功就是简单道理的深刻理解与灵活运用 前不久,阿里大牛虾总在群里抛出一个问题:“从深层次讲解一下如何理解IOC,IOC和DI是一回事吗?” 这个问题真是让人平静而又不平静 平静源于此问题就像问中国人怎么使用筷子,天天使用筷子,难道还不会使用筷子? 但又不平静,你能写出一份详细的说明书,让一个不会使用筷子的人按此说明成功地使用上筷子吗?
291 0
IOC理解
|
Oracle 架构师 Java
什么是IOC
什么是IOC
208 0
什么是IOC
|
XML 架构师 关系型数据库