Spring Bean

Spring IOC容器相当于一个工厂,容器中的 Bean 相当工厂的产品。工厂要生产和管理 Bean,需要让工厂知道加载那些Bean,如何加载。

Spring 配置文件支持两种不同的格式,分别是 XML 文件格式和 Properties 文件格式。

一般Spring 以 XML 文件格式作为 Spring 的配置文件,通过 XML 配置文件注册并管理 Bean 之间的依赖关系。

Beans.xml 头配置

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:c="http://www.springframework.org/schema/c"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean></bean>
</beans>

bean标签常用属性

属性 描述
id Bean 的唯一标识符,Spring 容器对 Bean 的配置和管理都通过该属性完成
name Spring 容器同样可以通过此属性对容器中的 Bean 进行配置和管理,name 属性中可以为 Bean 指定多个名称,每个名称之间用逗号或分号隔开
class 指定了 Bean 的具体实现类
scope Bean 实例的作用域, singleton(默认单例)、prototype(原型)、request、session 和 global Session
属性 描述 bean元素的子元素
constructor-arg 此元素传入构造参数进行实例化, index 属性指定构造参数的序号(从 0 开始),type 属性指定构造参数的类型
property 调用 Bean 实例中的 Set 方法完成属性赋值,元素的 name 属性指定 Bean 实例中的相应属性名
属性 描述 property constructor-arg等元素的子元索
ref property 和 constructor-arg 元素的子元索,ref元素中的 bean 属性用于指定对 Bean 工厂中某个 Bean 实例的引用
value property 和 constructor-arg 元素的子元索,用于直接指定一个常量值
属性 描述
list 用于封装 List 或数组类型的依赖注入
set 用于封装 Set 类型属性的依赖注入
map 用于封装 Map 类型属性的依赖注入
entry map元素的子元素,用于设置一个键值对。其 key 属性指定字符串类型的键值,ref 或 value 子元素指定其值

bean的实例化 bean标签用例

1:加载user,通过默认无参的构造方法加载user


User类

public class User {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}

spring.xml配置

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- bean就是java对象  由spring来创建和管理 -->    <bean id="user" class="cn.lingyiwin.bean.User"/>
</beans>

TestUser类

public class TestUser {public static void main(String[] args) {ApplicationContext act =new ClassPathXmlApplicationContext("config/spring.xml");User user = (User)act.getBean("user");System.out.println(user);}
}

执行结果:说明User对象已经被Spring

cn.lingyiwin.bean.User@2b98378d

上面示例如果没有看明白,我将默认的构造方法打一行带吗?
修改User类

public class User {private String name;public User() {System.out.println("user对象被创建");}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

执行结果:

user对象被创建
cn.lingyiwin.bean.User@2b98378d

2:通过property 为user的那么属性设置值。并打印输出

必须有该属性的set方法。

<bean id="user" class="cn.lingyiwin.bean.User"><property name="name" value="设置name的值"/>
</bean>

执行结果:

user对象被创建
cn.lingyiwin.bean.User@56ac3a89
设置name的值

3:通过有参的构造函数加载user对象

user对象

public class User {private String name;public User(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

修改xml

   <bean id="user" class="cn.lingyiwin.bean.User"><constructor-arg name="name" value="有参构造方法"/></bean>

执行结果:

cn.lingyiwin.bean.User@5cb9f472
有参构造方法

4:通过构造方法中还有很多属性可以设置。可以参考官方文档。


index:通过下标设置
name:通过名称设置
type:通过参数类型设置 String int等

 <constructor-arg type="String"><value>String</value></constructor-arg>

ref 是引用类型,value 是用来设置值。

02_Spring Bean 属性 即xml <beans>标签详解相关推荐

  1. Java--web.xml加载过程;文件标签详解

    一.web.xml加载过程 我们在启动Javaweb项目时,首先需要启动一个容器(如Tomcat,JBoss) WEB加载web.xml过程如下: 1.在启动Web项目时,容器(如Tomcat,JBo ...

  2. z-index失效的几种情况,父标签position属性为relative的时候,详解

    网上对这一方面解释的很多,我也不想把别人的抄过来.在这里是加上我对这些情况的理解还有我的一些疑惑,若有问题,请留言,谢谢!!!话不多说,进入正题: 文章重点:z-index失效的一类情况:父标签pos ...

  3. ssh2的application.xml配置文件配置详解

    ssh2的application.xml配置文件配置详解 1.导入其他的配置文件.在ssh项目中可以导入其他的配置文件,导入的格式为: <import resource="classp ...

  4. java crossdomin.xml_crossdomain.xml的配置详解

    目录 1 简介 2 crossdomain.xml的配置详解 3 总结 1 简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及 ...

  5. W3C中meta标签详解

    2019独角兽企业重金招聘Python工程师标准>>> meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <meta ...

  6. Pom.xml文件教程详解

    原创整理不易,转载请注明出处:史上最全的maven pom.xml文件教程详解 代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm   ...

  7. JSF标签详解(全)

    转自:https://wenku.baidu.com/view/82b84b255901020207409c87.html :https://blog.csdn.net/qq_36411874/art ...

  8. SEO技巧:Meta标签详解

    网页设计:Meta标签详解 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广 个人网站,人们首先想到的方法无外乎以下几种: ●在搜索引擎中 ...

  9. 网页设计:Meta标签详解

    网页设计:Meta标签详解 很多人忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧! META标签是H ...

最新文章

  1. RDKit | 比较化合物并通过PCA可视化化学空间
  2. oracle 代码 字段映射,将ORACLE TIMESTAMP(9)字段映射到java.util.Date
  3. python下载模块命令_python kafka模块操作命令集合
  4. 动态规划简单应用:斐波那契数列
  5. 如何解开机器学习的面纱?
  6. php 输入值,php-HTML输入值更改
  7. Python实现查询12306火车票信息
  8. 每天一算法(二)实现栈的push pop 操作,并可以输出栈的最小值
  9. 程序员面试金典——17.5珠玑妙算
  10. day03_01 Python历史、32bit和64bit系统的区别
  11. 计算机网络管理一07872自考知识点,电子信息工程专业2019年10月四川自考科目及考试时间[本科]...
  12. 合理利用计算机虚拟内存,虚拟内存有什么用?虚拟内存怎么设置最好?
  13. 新西兰 计算机 转专业,在留学新西兰以后,半途想转专业怎么办?
  14. 应急通信于气象雷达的应用
  15. RabbitMQ安装过程(Win10)
  16. MySQL学习笔记——20170811
  17. 新年伊始 张孝祥老师 离开了
  18. IDEA之翻译器的妙用Translation
  19. sssssssssssssssssssssssssss
  20. 费曼学习法——孩子弱点方向的提升和沟通技巧

热门文章

  1. 关于vio和ila的区别
  2. 我是“阴谋论”支持者!
  3. 斯坦福、伯克利、MIT、CMU、UIUC计算机专业概况
  4. 安卓子系统如何安装?
  5. linux查看进程运行命令行参数,linux查看进程运行命令
  6. Linux curses 总结一
  7. 升级iOSBeta版本
  8. Java代码如何快速解析JSON字符串,Java解析json字符串,逻辑清晰一看就懂
  9. ubuntu anzhang java,在Ubuntu中实现人脸识别登录的完整步骤
  10. C/C++基础题076.蛇形矩阵