java个人学习笔记:spring 容器

在xml文件中通过bean节点来配置bean

<bean id=”helloWordl” class=”com.cy.test.HelloWorld”></bean>

 

id:bean的名称

在ioc容器中必须是唯一的。

若id没有指定,spring自动将权限定性类名作为bean的名字。

id可以指定多个名字,名字之间用都好,分毫,或者空格分隔。

 

Spring IOC容器

在ioc容器读取bean配置创建bean实例之前。必须对它进行实例化。只有在容器实例化后,才可以从IOC容器里获取Bean的实例并使用。

spring提供了两种类型的ioc容器实现。

BeanFactory ioc容器的基本实现

ApplicationContext 提供了更多的高级特性,是BeanFactory的子接口。

BeanFactory 是spring框架的基础设施,面向spring本身。

ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext二分BeanFactory

 

ApplicationContext 的主要实现类

ClassPathXmlApplicationContext:从类路径下加载配置文件。

FileSystemXmlApplicationContext:从文件系统中加载配置文件。

ConfigurableApplicationContext:扩展与ApplicationContext 新增两个主要方法refresh()和close()/在AppplicationContext具有启动,刷新和关闭上下文的能力。

 

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

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

从IOC容器中获取Bean

ApplicationContext的getBean()方法;

依赖注入的方式

属性注入

构造器注入

工厂方法注入(很少使用,不推荐)

 

 

属性注入

属性注入即通过setter方法注入Bean的属性值或者以来的对象

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

<bean id=”helloworld” class = “cy.test.HelloWorld”>

       <property name=”userName” value=”test”></property>

</bean>

 

构造注入

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

构造器注入在<constructor-arg>元素里申明属性,没有name属性。

 

 

引用其他Bean

组成应用程序的Bean经常需要互相协作以完成应用程序的功能,要使Bean能够相互访问,就必须在Bean配置文件中指定对Bean的引用。

在Bean配置文件中,可以通过<ref>元素或ref属性为Bean的属性或构造参数对Bean的引用。

也可以在属性构造器里包含bean的申明。这样子的bean称为内部bean

<bean id=”service” class=”com.cy.test.service”></bean>

<bean id=”action” class=”com.cy.test.action”>

    <property name=”service” ref=”service”></property>

</bean>

 

内部bean

当bean实例仅仅给一个特定的属性使用时,可以将其声明为内部bean 内部bean申明直接包含在<property>或者<construct-arg>元素里。不需要设置任何id或name属性。内部bean不能使用在其他任何地方。(没有id或者name引用)

集合属性

在spring中可以通过一组内置的xml标签<list><set><map>来配置集合属性

时间: 2024-10-07 01:12:17

java个人学习笔记:spring 容器的相关文章

Spring学习笔记--Spring IOC

沿着我们上一篇的学习笔记,我们继续通过代码学习IOC这一设计思想. 6.Hello类 第一步:首先创建一个类Hello package cn.sxt.bean; public class Hello { private String name; public void setName(String name) { this.name = name; } public void show(){ System.out.println("hello,"+name); } } 第二步:创建配置

C++学习笔记5 容器

1.  使用assign assign 操作首先删除容器中所有的元素,然后将其参数所指定的新元素插入到该容器中.与复制容器元素的构造函数一样,如果两个容器类型相同,其元 素类型也相同,就可以使用赋值操作符(=)将一个容器赋值给另一个容器.如果在不同(或相同)类型的容器内,元素类型不相同但是相互兼容,则其赋值运 算必须使用assign 函数.例如,可通过assign 操作实现将vector 容器中一段char* 类型的元素赋给string 类型list 容器. 由于assign 操作首先删除容器中

java nio学习笔记(一)

位置保留,待用 java nio学习笔记(一),布布扣,bubuko.com

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

java排序学习笔记

前面写了js的排序实现,总得玩玩java的哈. 同样,冒泡.选择.快速(这三个之前实现过也写过文章).堆排序,然后做比较. 主要遇到的难点: - -||想轻松点写个封装计时的逻辑,不想每调用一个排序就要写一个计时代码.想想,还是javascript写起来方便: java的话,我想到的方法是写一个抽象类:抽象出排序方法,实现一个排序计时方法(该方法调用了抽象排序,但在先后排序时加入计时代码[感觉像是aop操作]): 接着所有排序类都继承这个抽象类,并实现排序方法,调用的时候直接调用继承的排序计时方

《深入Java虚拟机学习笔记》- 第4章 网络移动性

Java虚拟机学习笔记(四)网络移动性 <深入Java虚拟机学习笔记>- 第4章 网络移动性,布布扣,bubuko.com

《深入Java虚拟机学习笔记》- 第7章 类型的生命周期

一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令,或者通过不明确的创建.反射.克隆和反序列化): 当调用某个类的静态方法时(即在字节码中执行invokestatic指令): 当使用某个类或接口的静态字段,或者对该字段赋值时(用final修饰的静态字段除外,它被初始化为一个编译时常量表达式): 当调用Java API中的某些反射方法: 当初始化某个

《深入Java虚拟机学习笔记》- 第13章 逻辑运算

<深入Java虚拟机学习笔记>- 第13章 浮点运算 <深入Java虚拟机学习笔记>- 第13章 逻辑运算,布布扣,bubuko.com

《深入Java虚拟机学习笔记》- 第12章 整数运算

Java虚拟机提供几种进行整数算术运算的操作码,他们执行基于int和long类型的运算.当byte.short和char类型值参与算术运算时,首先会将它们转换为int类型.这些操作码都不会抛出异常,溢出在这里通常可以被忽略. 整数加法 操作码 操作数 说明 iadd (无) 从栈中弹出两个int类型数,相加,然后将所得int类型结果压回栈 ladd (无) 从栈中弹出两个long类型数,相加,然后将所得long类型结果压回栈 将一个常量与局部变量相加 操作码 操作数 说明 iinc vindex

《深入Java虚拟机学习笔记》- 第2章 平台无关

Java虚拟机学习笔记(二)平台无关 <深入Java虚拟机学习笔记>- 第2章 平台无关,布布扣,bubuko.com