Spring IOC的实现方式

Spring IOC

1.1spring IOC的实现:

1.纯xml(bean信息定义全部配置在xml中),该bean定义模式下IOC容器启动方式:
	JavaSE应用:ApplicationContext applicationContext = new ClassPathApplicationContext("beans.xml");
		  或者:new FileSystemXmlApplicationContext("c:/beans.xml");
	JavaWeb应用:ContextLoaderListener(监听器去加载xml)
2.xml+注解部分bean使用xml定义,部分bean使用注解定义
3.纯注解模式,所有的bean都是用注解来定义,该bean定义模式下IOC容器启动方式:
	JavaSE应用:ApplicationContext applicationContext = new AnnotationConfigApplicationContext("beans.xml");
	JavaWeb应用:ContextLoaderListener(监听器去加载注解配置类)
学习注解的技巧:找xml中标签(属性)和注解的一一对应关系即可。

1.2纯xml方式

Bean创建的三种方式:
    <!--Spring ioc实例化Bean的三种方式-->
    <!--方式一:使用无参构造器(推荐)-->
<!--    <bean id="connectionUtils" class="com.lagou.edu.utils.ConnectionUtils"></bean>-->
    <!--另外两种方式是为了我们自己new的对象加入到springioc容器管理-->
    <!--方式二:静态方法-->
    <!--<bean id="connectionUtils" class="com.lagou.edu.factory.CreateBeanFactory" factory-method="getInstanceStatic"/>-->
    <!--方式三:实例化方法-->
    <bean id="createBeanFactory" class="com.lagou.edu.factory.CreateBeanFactory" />
    <bean id="connectionUtils" factory-bean="createBeanFactory" factory-method="getInstance"/>

scope:定义bean的作用范围:默认都是单例模式
        singleton:单例,IOC容器中只有一个该类对象,默认为singleton
        prototype:原型(多例),每次使用该类的对象(getBean),都返回给你一个新的对象,Spring只创建对象,不管理对象
单例模式:singleton
对象出⽣:当创建容器时,对象就被创建了。
对象活着:只要容器在,对象⼀直活着。
对象死亡:当销毁容器时,对象就被销毁了。
⼀句话总结:单例模式的bean对象⽣命周期与容器相同。
多例模式:prototype
对象出⽣:当使⽤对象时,创建新的对象实例。
对象活着:只要对象在使⽤中,就⼀直活着。
对象死亡:当对象⻓时间不⽤时,被java的垃圾回收器回收了。
⼀句话总结:多例模式的bean对象,spring框架只负责创建,不负责销毁。
set注入使用property标签,如果注入的是另外一个bean那么使用ref属性,如果注入的是普通值那么使用的是value属性
<!--name:按照参数名称注入,index按照参数索引位置注入--> 

1.3xml与注解相结合模式

注意:
1)实际企业开发中,纯xml模式使⽤已经很少了
2)引⼊注解功能,不需要引⼊额外的jar
3)xml+注解结合模式,xml⽂件依然存在,所以,spring IOC容器的启动仍然从加载xml开始
4)哪些bean的定义写在xml中,哪些bean的定义使⽤注解
第三⽅jar中的bean定义在xml,⽐如德鲁伊数据库连接池
⾃⼰开发的bean定义使⽤注解

1.4纯注解模式

改造xm+注解模式,将xml中遗留的内容全部以注解的形式迁移出去,最终删除xml,从Java配置类启动
对应注解
@Configuration 注解,表名当前类是⼀个配置类
@ComponentScan 注解,替代 context:component-scan
<dependency>
 <groupId>javax.annotation</groupId>
 <artifactId>javax.annotation-api</artifactId>
 <version>1.3.2</version>
</dependency>
@PropertySource,引⼊外部属性配置⽂件
@Import 引⼊其他配置类
@Value 对变量赋值,可以直接赋值,也可以使⽤ ${} 读取资源配置⽂件中的信息
@Bean 将⽅法返回对象加⼊ SpringIOC 容器

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值