Spring-IOC

1.Spring是一个开源的,轻量级的,非侵入性的框架

2.Spring中的IOC(inversion of control)

1.控制反转(IOC):他是一种编程思想

2.控制的具体实现:由原来的传统的应用程序自身来创建对象,转变为由Spring容器来创建对象,降低了各个类之间的耦合,增加了代码的扩展性

3.反转的具体实现:创建对象权限由原来的应用程序转变为spring容器,实现反转

4.控制反转的实现:是由IOC容器来实现的,利用spring的核心容器Beans提供的BeanFacotry来创建我们定义好的Bean

5.控制反转别名:依赖注入(DI)Dependency in jection,换个角度理解控制反转

6.控制反转在创建对象时,对象的属性是由spring容器来设置的

7.BeanFacotry是一个基于工厂模式的一个接口,ClassPathXMLApplicationContext就是这个接口的实现类 

8.spring里面使用了很多种设计模式,最顶层的就是工厂模式,接下来就是代理模式

9.ClassPathXMLApplicationContext是用来解析xml配置文件,并使用BeanFactory来创建xml配置文件中配置被Bean对象,可以返回一个BeanFactory类型,因为他是  ·BeanFacotry的实现类、

10,例子:吃饭:我们原来要自己做饭吃,现在我们可以点外卖来吃饭,满足需求

11.一句话概括IOC:对象的创建,管理,装配全部由spring容器来完成

12.IOC创建对象的方式:

1.根据我们类的无参构造方法来创建,直接在spring.xml文件中配置Bean对象

2.根据我们类的有参构造方法来创建:

1.需要在xml配置文件中配置的Bean对象中配置<constructor-args index="0" value="mike">,index代表有参构造方法中的参数下标,从0开始,value表示对应下标的值

2.也可以配置<constructor-args name="lisi" value="mike">,这里name表示参数名称

3.也可以配置<constructor-args type="java.lang.String" value="mike">,tyep这里代表的是我们的参数类型

   3.使用工厂来创建对象(静态工厂):使用static修饰

1.创建生产对象的Factory:

	public static IocDemo getInstance(String  name){
    		return new IocDemo(name);
	}
      2.配置文件里面配置:
	<bean id="name" class="com.ioc.demo.UserFactory" factory-method="getInstance">
    		<constructor-arg index="0" value="张三"></constructor-arg>
	</bean>
      3.动态工厂:
	1.创建一个动态工厂:
	public IocDemo getInstance(String name){
   		 return new IocDemo(name);
	}
	2.spring.xml配置:
	<bean id="userFactory" class="com.ioc.demo.UserDongFactory"></bean>
	 	<bean id="name" factory-bean="userFactory" factory-method="getInstance">
   	 	<constructor-arg index="0" value="张三"></constructor-arg>
	</bean>
换个角度理解IOC:依赖注入(Dependency injection):
	1.依赖:Bean对象的创建依赖于Spring容器,Bean对象依赖的资源
	2.注入:Bean对象依赖的资源由Spring容器进行装配 
	3.有参构造方法注入(无参构造方法不能进行注入)
	4.Setter注入:
		1.要求:
			1.Bean对象所依赖的属性必须有Setter方法
			2.格式必须是set+首字母大写的属性名称
		2.注意:
			1.boolean类型的属性有setter方法,没有getter方法,而是is方法
		3.注入方式:
			1.常量注入:只是普通的通过配置Bean对象和对象所依赖的属性
			2.Bean注入:一个Bean对象要引用另一个Bean对象,被引用的对象要先创建
			3.数组注入:一个Bean对象里面依赖的属性是一个数组,这时候我们要配置多个值
<bean id="name" class="com.ioc.demo.IocDemo">
    <property name="name" value="mike"></property>
    <property name="books">
        <array>
            <value>傲慢与偏见</value>
            <value>西游记</value>
            <value>夏仲夜之梦</value>
        </array>
    </property>
</bean>

4.list注入:一个Bean对象里面依赖的属性是一个数组,这时候我们要配置多个值

<property name="hobbies">

    <list>

        <value>听音乐</value>

        <value>跳舞</value>

        <value>羽毛球</value>

    </list>

</property>

5.Map注入:

<property name="cards">

    <map>

        <entry key="中国银行" value="123"></entry>

        <entry>

            <key><value>建设银行</value></key>

            <value>456</value>

        </entry>

    </map>

</property>

6.Set注入:

<property name="phone">

    <set>

        <value>123456</value>

        <value>456789</value>

    </set>

</property>

7.Null注入:

<property name="wife">

    <null></null>

</property>

8.Properties注入:properties类继承了HashTable,以键值对的形式存储数据,不允许存储相同的键,但可以存储相同的值

<property name="info">

    <props>

        <prop key="学号">001</prop>

        <prop key="sex"></prop>

        <prop key="name">小名</prop>

    </props>

</property>

9.P命名空间注入:

xmlns:p="http://www.springframework.org/schema/p"
<bean id="student" class="com.ioc.demo.Student" p:usernmae="mike" p:password="123"></bean>

10.C命名空间注入:这里要注意的是C空间命名注入注入的Bean对象必须有构造方法

xmlns:c="http://www.springframework.org/schema/c"
<bean id="student" class="com.ioc.demo.Student" c:usernmae="lisi" c:password="123"></bean>









	


	
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值