Ioc 反转控制 反转资源获取的方向

分离接口与实现

采用工厂模式

采用反转控制

 

Di 依赖注入 依赖容器把资源注入

 

配置bean 通过全类名(反射)

配置形式:基于xml方式

Ioc容器的beanFactory&ApplicationContext

依赖注入的方式:属性注入,构造器注入

 

 

Bean必须要有一个无参的构造函数

Class:bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参的构造函数

id :bean 的标示,id唯一

 

applicationContext 是spring的ioc容器,是一接口。

其实现类:

ClassPathXmlApplicatContext从类的路径下来加载配置文件

Getbean()

FileSystemXmlApplicationContext

 

属性注入

通过setter方法注入bean的属性值或依赖的对象

属性注入使用<property>元素,使用name属性指定bean的属性名称,value属性或<value>子节点指定属性值。

属性注入是实际应用中最常见的注入方式。

<bean
id="helloWorld"
class="com.test.bean.HelloWorld">

        <property
name="name"
value="spring"></property>

    </bean>

构造函数注入

<!-- 通过构造函数配置bean的属性 -->

    <bean
id="car"
class="com.test.bean.Car">

        <constructor-arg
value="audi"
index="0"></constructor-arg>

        <constructor-arg
value="shanghai"
index="1"></constructor-arg>

        <constructor-arg
value="30000"
index="2"
type="double"></constructor-arg>

    </bean>

    

    <bean
id="car2"
class="com.test.bean.Car">

        <constructor-arg
value="bwm"></constructor-arg>

        <constructor-arg
value="shandong"></constructor-arg>

        <constructor-arg
value="30000"
type="int"></constructor-arg>

    </bean>

使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器!

如果value字面的值中包含特殊字符就可以通过<![CDATA[字符串]]>的形式注入。

我们也可通过value子节点进行配置

 

可以使用property的ref属性建立bean之间的引用关系。

    <bean
id="person"
class="com.test.bean.Person">

        <property
name="name"
value="zhangsan"></property>

        <property
name="age"
value="20"></property>

        <property
name="car"
ref="car2"></property>

    </bean>

 

可以通过一组内置的xml标签来配置集合属性如 list set map

<bean
id="person2"
class="com.test.bean.collect.Person">

        <property
name="name"
value="lisi"></property>

        <property
name="age"
value="20"></property>

        <property
name="cars">

            <list >

                <ref
bean="car"
/>

                <ref
bean="car2"
/>

            </list>

        </property>

    </bean>

 

 

也可通过内部bean来注入属性

 

<bean
id="person2"
class="com.test.bean.collect.Person">

        <property
name="name"
value="lisi"></property>

        <property
name="age"
value="20"></property>

        <property
name="cars">

            <list >

                <ref
bean="car"
/>

                <ref
bean="car2"
/>

                <bean
class="com.test.bean.Car">

                    <constructor-arg
value="ford"></constructor-arg>

                    <constructor-arg
value="济南"></constructor-arg>

                    <constructor-arg
value="20000"
type="int"></constructor-arg>

                </bean>

            </list>

        </property>

 

Map注入

<bean
id="newPerson"
class="com.test.bean.collect.NewPerson">

        <property
name="name"
value="Wangwu"></property>

        <property
name="age"
value="20"></property>

        <property
name="cars">

            <map>

                <entry
key="AA"
value-ref="car"/>

                <entry
key="BB"
value-ref="car2"/>

            </map>

        </property>

    </bean>

 

Properties属性注入

 

    <bean
id="dataSource"
class="com.test.bean.collect.DataSource">

        <property
name="properties">

            <props>

                <prop
key="user">root</prop>

                <prop
key="password">root</prop>

                <prop
key="jdbcUrl">jdbc:mysql:///test</prop>

                <prop
key="driverClass">com.mysql.jdbc.Driver</prop>

            </props>

        </property>

    </bean>

 

 

 

 

 

 

 

 

 

 

 

Spring笔记②--各种属性注入的更多相关文章

  1. 这篇文章,我们来谈一谈Spring中的属性注入

    本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring中的对象跟Bean,你知道Spring怎么创 ...

  2. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  3. Spring框架的属性注入

    1. 对于类成员变量,常用的注入方式有两种 * 构造函数注入(没有空的构造方法注入) * 属性setter方法注入(有空的构造方法注入) 2. 在Spring框架中提供了前两种的属性注入的方式 1. ...

  4. Spring - IoC(2): 属性注入 & 构造注入

    依赖注入是指程序运行过程中,如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 I ...

  5. Spring为某个属性注入值或为某个方法的返回值

    项目中用到需要初始化一些数据,Spring提供了filed的值注入和method的返回值注入. 一.Field值的注入 filed值注入需要使用org.springframework.beans.fa ...

  6. Spring入门_02_属性注入

    Spring 的set方法(属性)注入 UserAction类中设置属性和get.set方法.(实际上只需要set方法) private List list = null; private Set s ...

  7. Spring中的属性注入注解

    @Inject使用 JSR330规范实现的 默认按照类型注入 如果需要按照名称注入,@Inject需要和@Name一起使用 @Resource JSR250规范实现的,需要导入不同的包 @Resour ...

  8. Spring.net页面属性注入

    .条件spring.web程序集 1.1 system.web配置 <httpHandlers> <add verb="*" path="*.aspx& ...

  9. 【Java Web开发学习】Spring构造器和属性注入

    测试类 public class Construct { private String address; private long phone; public Construct(String nam ...

随机推荐

  1. 对象关系映射(ORM)

    1.什么是 对象-关系映射 对象-关系映射(Object Relational Mapping,简称ORM,对象关系映射)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,OR ...

  2. laravel 5.5 《电商实战 》基础布局

    我们需要为我们的项目构建一个基础的页面布局,布局文件统一存放在 resources/views/layouts 文件夹中,布局涉及的文件如下: app.blade.php —— 主要布局文件,项目的所 ...

  3. hive--数据仓库

    1.1.1     hive是什么? Hive是基于 Hadoop 的一个数据仓库工具: 1.       hive本身不提供数据存储功能,使用HDFS做数据存储: 2.       hive也不分布 ...

  4. QQ开发技术资料集锦

    1.GG2013:可在广域网部署运行的QQ高仿版 http://www.cnblogs.com/justnow/category/503400.html 2. 苏飞博客: C#仿QQ皮肤-皮肤控件窗体 ...

  5. struts2第三天——值栈

    大致内容: ognl概述 ognl入门 值栈 一.OGNL概述 OGNL,全称为Object-Graph Navigation Language,对象图导航语言 它是一个功能强大的表达式语言,用来获取 ...

  6. plsql分页

    分页是任何一个网站(bbs,网上商城,blog)都会使用到的技术,因此学习pl/sql编程开发就一定要掌握该技术.如下图: 1.  编写无返回值的存储过程 首先是掌握最简单的存储过程,无返回值的存储过 ...

  7. 会话控制(session和cookie)、跨页面传值

    1.session  登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器:   (2)session每个人(登陆者)存一份: (3)session ...

  8. javaweb学习3——验证码

    声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...

  9. 怎么使用Spring配置事务 ?

    Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略. 声明式事务管理的配置方式,通常有以下4种: (1) 使用TransactionProxyFactoryBean为目 ...

  10. python游戏编程——乌龟和鱼类场景编程

    综合举例: 游戏编程:按以下要求定义一个乌龟类和鱼类并尝试编写游戏. O    假设游戏场景为范围(x, y)为0<=x<=10,0<=y<=10 ·       游戏生成1只 ...