文档章节

Spring的Bean管理(XML方式)

T-Brain
 T-Brain
发布于 2015/10/20 01:26
字数 760
阅读 10
收藏 0
点赞 0
评论 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

说说在 Spring 中如何基于 Java 类进行配置

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

deniro ⋅ 05/11 ⋅ 0

spring梳理(二) 基于注解的方式注册bean

我们知道,如果想要将bean交由spring容器管理,就需要首先将bean注册在spring容器中,而bean可以通过xml或者注解的方式进行注册,基于xml的配置一般是通过、等xml标签进行配置,然后由sprin...

wyn_lin ⋅ 05/25 ⋅ 0

spring4.0之二:@Configuration的使用

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfi...

文文1 ⋅ 06/01 ⋅ 0

Spring Bean注册解析(一)

Spring是通过IoC容器对Bean进行管理的,而Bean的初始化主要分为两个过程:Bean的注册和Bean实例化。Bean的注册主要是指Spring通过读取配置文件获取各个bean的声明信息,并且对这些信息进行注...

张旭峰 ⋅ 05/12 ⋅ 0

Spring IOC知识点一网打尽!

前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 在刷Spring书籍的时候花了点时间去学习了单例模式和工...

Java3y ⋅ 05/22 ⋅ 0

Spring与SpringMVC的容器关系分析

Spring与SpringMVC的容器关系分析 结论: Spring(springContext.xml)容器配置,排除所有@controller 的Bean <context:component-scan base-package="com.service,com.util,com.dao" > Spri......

LYQ1990 ⋅ 2016/05/24 ⋅ 0

Spring 全部注解

Spring自带依赖注入注解: Spring自带的一套依赖注入注解;@Required @Autowired @Component @Scope("singleton) 、@Qualifier、@Order、@ImportResource @Value JSR-250注解:Java平台的公共...

干干 ⋅ 2017/12/06 ⋅ 0

Spring中关于bean的作用域与生命周期

在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什...

忻胜霄 ⋅ 06/07 ⋅ 0

Spring系列之Spring常用注解总结

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点: 1、如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么...

HJCui ⋅ 05/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

编译安装apache2.4.33

1. 环境 编译安装apache2.4.33,错误 error: ld returned 1 exit status。 CentOS 7.2apr-1.6.3apr-util-1.6.1httpd-2.4.33 2. 编译报错 编译安装完 apr apr-util 之后,安装httpd-2.4.3......

周云台 ⋅ 19分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 28分钟前 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 35分钟前 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 36分钟前 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 36分钟前 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 45分钟前 ⋅ 0

Greenplum 三节点安装教程(非root用户)

Greenplum 三节点安装教程(非root用户) 环境准备 安装vmware,装三台centos 虚拟机设置: 主机名 IP 内存 硬盘 node1 Xxx1 2G 80G node2 Xxx2 2G 80G node3 Xxx3 2G 80G CSDN下载greenplum...

仔仔1993 ⋅ 46分钟前 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 47分钟前 ⋅ 0

SpringWind

环境搭建和系统部署

颖伙虫 ⋅ 今天 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部