spring容器与IOC项目的创建

来源:互联网 发布:ipad小说软件 编辑:程序博客网 时间:2024/06/14 23:24

Spring容器

spring容器可以帮助管理所有的Bean对象, 在spring容器读取Bean实例之前,必须对容器进行实例化,只有在容器实例化后,才可以从容器里获取Bean实例并使用

Spring提供了两种类型的容器实现

BeanFactory: IOC 容器的基本实现.

ApplicationContext: 提供了更多的高级特性.BeanFactory的子接口.

BeanFactory Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而非底层的BeanFactory

三个容器:

1ConfigurableApplicationContext扩展于ApplicationContext,新增加两个主要方法:refresh()close(), 让ApplicationContext具有启动、刷新和关闭上下文的能力

2ApplicationContext在初始化上下文时就实例化所有单例的Bean

ApplicationContext 的主要实现类:

ClassPathXmlApplicationContext("spring.xml")从类路径下加载配置文件

FileSystemXmlApplicationContext("classpath:spring.xml"从文件系统中加载配置文件

3WebApplicationContext是专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作

springIOC项目创建

1IOCDI

IOCInversion of Control)(控制反转):其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了IOC之后

则是容器主动的地将资源推送给它所管理的组件,组件所做的仅仅是选择一种合适的方式来接受资源,这种行为也被称之为查找的被动形式。

DIDependency Injection(依赖注入)---IOC的另一种表述方式:即组件以一些预先定义好的方式(例如:setter方法)接受来自容器的资源注入。相对于IOC而言,这种表述更直接

2:项目的创建

1》首先要加入spring所需的jar包,可以在maven项目的pom.xml文件中直接添加一个依赖,可以直接引入spring所需的几个jar包,依赖如下,可选择版本。

<dependencies>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context</artifactId>        <version>4.3.12.RELEASE</version>    </dependency>  </dependencies>


2》此外还需要一个必不可少的xml文件,用来实例化一些对象,文件自己创建,文件名可以随意,可以放在resources目录下、

示例:

<?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">     <bean id="..." class="...">        <!-- collaborators and configuration for this bean go here -->    </bean>     <bean id="..." class="...">        <!-- collaborators and configuration for this bean go here -->    </bean>     <!-- more bean definitions go here --></beans>


3创建与使用一个Bean

<bean id="别名" class="对象的路径"></bean>

注意:idBean的名称,在IOC容器里必须是唯一的。如果没有指定id的类,默认的名字是“类名#编号”

IOC容器中获取Bean:调用ApplicationContextgetBean()方法.

例:


User user=(User)context.getBean("user");System.out.println(user.getUser().getName());

4:依赖注入的方式:

依赖注入就是给Bean的属性添加值。

Spring支持3种依赖注入的方式

1》属性注入

属性注入即通过setter方法注入Bean的属性或依赖的对象。

属性注入使用<property>元素,使用name属性指定Bean的属性名称,value属性或<value>子节点指定属性值。属性注入是实际应用中最常用    的注入方式:示例:

<bean id="user" class="com.et.bean.User"><property name="id" value="1001"></property></bean>


引用其他bean:组成应用程序的Bean经常需要互相协作以完成应用程序的功能,使Bean能够相互访问,在Bean配置文件中指定对Bean的应用,在Bean的配置文件中,可以通过<ref>元素为Bean的属性或构造参数指定对Bean的引用:

<

bean id="user1" class="com.et.bean.User"><property name="id" ref=”user”></property></bean>

应用名为userBean

 

2》构造器注入

通过构造方法注入bean的属性值或依赖的对象,它保证了Bean实例在实例化后就可以使用。

按索引匹配入参,index代表构造方法中的参数下标,value代表值

<bean id="userConstructorIndex" class="com.et.bean.User"><constructor-arg index="0" value="3"></constructor-arg><constructor-arg index="1" value=属性注入"></constructor-arg></bean>


按类型匹配入参,type代表构造方法中的参数的类型,value代表值

<bean id="userConstructorType" class="com.et.bean.User"><constructor-arg type=”int” value="3"></constructor-arg><constructor-arg index="java.lang.String" value=属性注入"></constructor-arg></bean>


 

3》工厂方法注入(很少使用)


原创粉丝点击