文档章节

Spring的Bean管理(XML方式)

T-Brain
 T-Brain
发布于 2015/10/20 01:26
字数 760
阅读 11
收藏 0

Spring的创建Bean的方式 ( 三种 ) :

applicationContext接口负责加载配置文件,并且以加载就会把里面的Bean加载出来

1 . 使用无参构造的方法实例化Bean:(也是Spring的默认方式)

    bean实例化默认是调用了无参的构造方法,利用<反射>的原理获得对象的实例化

1
2
<!-- 无参数的构造方法: -->
< bean id = "studentService" class = "com.mickeymouse.ioc.StudentServiceImpl" ></ bean >
2 . 静态工厂实例化Bean:

    静态工厂实例化bean是实例化工厂以后,利用类名 点 方法(factory-method)名的方法实例化对象----实例化对象,由于静态直接调用工厂中的方法

提供静态工厂:

1
2
3
4
5
6
7
8
/**
      * 静态工厂方式
      * 方法是静态的  提供生产实现类
      * @return
      */
     public static StudentService getStudentService(){
         return new StudentServiceImpl();
     }

静态工厂配置

1
2
<!-- 静态工厂实例化Bean -->
<bean id= "studentService" class = "com.mickeymouse.ioc.StaicFactory" factory-method= "getStudentService" ></bean>

测试类:>通过加载配置文件,获得静态工厂的实例化,调用了静态工厂的静态方法,然后返回一个实例化的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
      * 静态工厂实现类
      */
     @Test
     public void test2(){
         //获取配置文件
         String path = "applicationContext.xml" ;
         //加载配置文件
         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(path);
         //生成实例化对象
         StudentService studentService = (StudentService) applicationContext.getBean( "studentService" );
         studentService.addStudent();
     }
3 . 实例工厂实例化Bean:

    实例工厂实例化是先实例化这个工厂(工厂方法都不是静态的),然后在实例化-----实例化工厂bean

提供实例工厂 (也就是没有静态方法) :

1
2
3
4
5
6
7
8
9
10
public class StaicFactory {
     /**
      * 实例工厂方式
      * 方法是非静态的  提供生产实现类
      * @return
      */
     public StudentService getStudentService(){
         return new StudentServiceImpl();
     }
}

配置XML文件:

1
2
3
<!-- 实例工厂实例化Bean -->
     < bean id = "staicFactory" class = "com.mickeymouse.ioc.StaicFactory" ></ bean >
     < bean id = "studentService" factory-bean = "staicFactory" factory-method = "getStudentService" ></ bean >


测试类:---这也是利用反射,先实例化对象,再调取对象中的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
      * 实例工厂实现类
      */
     @Test
     public void test3(){
         //获取配置文件
         String path = "applicationContext.xml" ;
         //加载配置文件
         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(path);
         StudentService studentService = (StudentService) applicationContext.getBean( "studentService" );
         
         studentService.addStudent();
     }

<Bean>的配置:

id和name区别:

bean中ID跟name其实是一样的,但是ID约束是不能出现特殊字符,但 name是可以出现特殊字符的----这name是因为struts1使用name来区分,如果使用struts1框架,实例化对象时必须写name

class : Bean的全路径

factor-bean:实例工厂实例化对象,与factory-method一块使用

factor-method:静态工厂时

Scope:Bean的作用范围

Scope参数:

singleton---单例>(默认是单例的,当你加载配置文件后,getbean()时,两次都获取的是一个对象,可以试试)

prototype---多例>当Action需要时  可以设置成多例的

request---应用在Web项目中,将对象存到request域中

session---应用在Web项目中,将对象存入到session域中.

globalsession---应用在Web项目中,应用Porlet环境.



© 著作权归作者所有

共有 人打赏支持
T-Brain
粉丝 1
博文 44
码字总数 46138
作品 0
海淀
程序员
私信 提问
Spring基础篇——Spring容器和应用上下文理解

上文说到,有了Spring之后,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程,走啊走啊,走到哪里,需要另外的对象来协助了,就给Spr...

圆梦巨人
05/03
0
0
Spring实战 (一) 一切从Bean开始

Spring可以做很多事情,但是归根究底.Spring的核心仅仅是依赖注入(DI)/控制反转(IoC)和面向切面编程(AOP)而已.Spring的一切都是基于这2点 Spring的一切都是从Bean开始的.什么是Bean?凡是被Spr...

kenshiro
2013/09/05
0
0
说说在 Spring 中如何基于 Java 类进行配置

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。 1 定义 Bean 普通的 POJO 只要标注...

deniro
05/11
0
0
2014-03-09 Spring的学习(1)------Spring管理Bean(实例化Bean)

1.搭建与测试Spring的开发环境 PS: Spring-beans-2.5.xsd (为使在Beans.xml操作顺畅) Perferences--->MyEclipse--->Files and Editors---->XML--->XML Catalog--->add User Specified Entrie......

查封炉台
2014/03/09
0
0
Spring中ApplicationContext和beanfactory区别

org.springframework.beans及org.springframework.context包是Spring IoC容器的基础。BeanFactory提供的高级配置机制,使得管理任何性质的对象成为可能。ApplicationContext是BeanFactory的扩...

ArlenXu
2015/01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据技术的发展趋势

大数据领域已经涌现出了大量新的技术,它们成为大数据采集、存储、处理和呈现的有力武器。这些技术下一步将如何发展?它们之中哪些技术将广为流行?又会诞生哪些新的技术? 技术趋向多样化,...

董黎明
11分钟前
1
0
藏在正则表达式里的陷阱

前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 我们可以看到所...

前端小攻略
13分钟前
0
0
TensorFlow的基础概念01

概念: TensorFlow是一个深度学习框架,人人都能实现机器学习。 import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'import tensorflow as tf#导入对应的TensorFlow#输出Hello W...

怪咖先生forever
13分钟前
0
0
关联更新,关联查询

关联更新 update A,B SET A.c1=B.c1,A.c2=B.c2 where A.id=B.id and ... update A inner join on A.id=B.id set A.c1=B.c1,A.c2=B.c2 where... 关联查询 交叉连接(cross join),内连接(inner ......

关元
17分钟前
0
0
django的环境搭建及启用

Pycharm社区版不像商业版那样可以直接创建django工程,需要通过一下步骤创建: 新建一个用于Django开发的虚拟环境 打开命令窗口 新建虚拟环境: conda create -n env_name python=3.6 查看系...

davidwbnu
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部