博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring装配Bean---使用xml配置
阅读量:6846 次
发布时间:2019-06-26

本文共 2322 字,大约阅读时间需要 7 分钟。

声明Bean

Spring配置文件的根元素是<beans>.

在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明.

除了Beans命名空间,Spring的核心框架总共自带了10个命名空间配置:

 命名空间 用途
 aop     为声明切面以及将@AspectJ注解的类代理为Spring切面提供了配置元素
 beans     支持声明Bean和装配Bean,是Spring最核心也是最原始的命名空间
 context 为配置Spring应用上下文提供了配置元素,包括自动检测和装配Bean,注入非Spring直接管理的对象 
jee  提供了与Java EE API的集成,例如JNDI和EJB
 jms 为声明消息驱动的POJO提供了配置元素    
lang  支持配置由Groovy、JRuby、BeanShell等脚本实现的Bean    
 mvc 启用SpringMVC的能力,例如面向注解的控制器、视图控制器和拦截器    
oxm  支持Spring的对象到xml配置的映射    
tx  提供声明式事物配置    
 util 提供各种各样的工具类元素,包括把集合配置为Bean,支持属性占位符元素    

 

 

 

 

 

 

 

 

 

 

 

 

xml结构如下:

     
......     
......

基于构造函数注入

使用<constructor-arg>元素。如果不配置<constructor-arg>元素,那么Spring将使用默认的构造函数。

     
     

通过工厂方法创建Bean

<bean>元素有一个factory-method属性,允许我们调用一个指定的静态方法,从而代替构造函数来创建一个类的实例

配置Bean的作用域

<bean>元素有一个scope属性,允许我们指定Bean的作用域,Bean的作用域主要有一下几种,默作用域为单例singleton

作用域 定义
singleton 在每一个Spring容器中,一个Bean定义只有一个对象实例(默认)
prototype 允许Bean的定义可以被实例化任意次(每次调用都创建一个实例)
request 在一次HTTP请求中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
session 在一个HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
global-session 在一个全局HTTP Session中,每个Bean定义对应一个实例。该作用域仅在Portlet上下文中才有效

 

 

 

 

 

 

 

 

配置Bean的初始化和销毁方法

Spring提供了Bean生命周期的钩子方法。

为Bean定义初始化和销毁操作,只需要使用init-method和destroy-method参数来配置<bean>元素。init-method属性指定了在初始化Bean时要调用的方法;destroy-method属性指定了Bean从容器移除之前要调用的方法。

使用<beans>元素的default-init-method和default-destroy-method属性配置所有<bean>共同默认的初始化方法和销毁方法

   
 ...    

注入Bean的属性

使用<property>元素。value填充基础类型值,ref填充<bean>引用

     
     

装配集合属性,Spring提供了4种类型的集合配置属性 <list> <set> <map> <props>

    
        
            
            
            
        
        
        
            
POEM3            
POEM2            
POEM1        
        
        
            
            
            
        
        
        
            
            
            
        
    

装配空值

除了<property>元素配置属性外,使用spring的命名空间p也可以装配属性,当然你得在<beans>元素中先引入命名空间p

     
     

本文转自帅气的头头博客51CTO博客,原文链接http://blog.51cto.com/12902932/1927610如需转载请自行联系原作者

sshpp

你可能感兴趣的文章
Win8 Metro(C#)数字图像处理--2.39二值图像投影
查看>>
linux 信号屏蔽
查看>>
2014年第五届蓝桥杯C/C++B组省赛题目解析
查看>>
怎么才知道你在使用的是不是中国电信CN2的线路
查看>>
angular 的 GET 请求 和 POST 请求的 区别 及 实现
查看>>
用户管理及授权管理
查看>>
mysql 配置MHA
查看>>
Windows Developer Day - MSIX and Advanced Installer
查看>>
【tp5】ThinkCMF5框架,配置使其支持不同终端PC/WAP/Wechat能加载不同配置和视图
查看>>
spring security+freemarker获取登陆用户的信息
查看>>
[RxJS] Implement RxJS `concatMap` by Waiting for Inner Subscriptions to Complete
查看>>
ubuntu创建idea桌面快捷方式
查看>>
详解JNDI的lookup资源引用java:/comp/env
查看>>
如何在IntelliJ IDEA中使用Git .ignore插件忽略不必要提交的文件
查看>>
愿你走出半生,归来仍是Java Parser
查看>>
[转]决定人生的三种成本:机会成本,沉没成本,边际成本
查看>>
A Generic Particle IO Library
查看>>
Enterprise Library 系列教程
查看>>
windows下搭建iphone开发环境
查看>>
POJ 3414 Pots (BFS)
查看>>