1 bean元素

<!--将User对象交给spring容器进行管理  -->
<!-- Bean元素:使用该元素描述需要spring容器管理的对象
class属性:被管理对象的完整类名.
name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象.
可以重复.可以使用特殊字符.
id属性: 与name属性一模一样.
名称不可重复.不能使用特殊字符.
结论: 尽量使用name属性.
-->
<bean name="user" class="www.test.bean.User"></bean>

2 对象的三种创建方式

   <!--对象创建方式1-空参数构造  -->
<bean name="user" class="www.test.bean.User"></bean> <!-- ================================================ -->
<!--对象创建方式2-静态工厂创建
调用UserFactory的静态方法createUser方法创建名为user2的对象.放入容器
-->
<bean name="user2" class="www.test.b_create.UserFactory"
factory-method="createUser"></bean> <!-- ===================================================== -->
<!--对象创建方式3-实例工厂创建 -->
<!--调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器 -->
<bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean>
<bean name="userFactory" class="www.test.b_create.UserFactory" />

3 scope属性

<bean name="user" class="www.test.bean.User" scope="singleton"></bean>
<bean name="user" class="www.test.bean.User" scope="prototype"></bean>
public void fun1(){
//1创建容器对象applicationContext
ApplicationContext ac = new ClassPathXmlApplicationContext("www/test/b_create/applicationContext.xml");
//2向容器中"要"user对象
User user1 = (User) ac.getBean("user");
User user2 = (User) ac.getBean("user");
User user3 = (User) ac.getBean("user");
User user4 = (User) ac.getBean("user");
//3打印user
System.out.println(user1==user4); // singletom : true
// prototype : false
}

4 初始化&销毁方法

@Test
//测试对象的生命周期
public void fun4(){
//1 创建容器对象
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("www/test/b_create/applicationContext.xml");
//2 向容器“要”User对象
User user = (User) ac.getBean("user");
//3打印
System.out.println(user);
ac.close();
}

5 模块化配置

<!--导入其它spring配置  -->
<import resource="www/test/b_create/applicationContext.xml"/>

6 属性的注入

1 set方式注入

<!--set方式注入  -->
<bean name="user" class="www.test.bean.User">
<!--值类型注入: 为User对象中名为name的属性注入tom作为值 -->
<property name="name" value="tom"></property>
<property name="age" value="25"></property>
<!-- 引用类型注入: 为car属性注入下方配置的car对象 -->
<property name="car" ref="car"></property>
</bean>
<!-- 将car对象配置到容器中 -->
<bean name="car" class="www.test.bean.Car">
<property name="name" value="奥迪"></property>
<property name="color" value="黑色"></property>
</bean>

2 构造函数注入

<!-- 将car对象配置到容器中 -->
<bean name="car" class="www.test.bean.Car">
<property name="name" value="奥迪"></property>
<property name="color" value="黑色"></property>
</bean> <!-- ============================================= -->
<!-- 构造函数注入 -->
<bean name="user2" class="www.test.bean.User">
<constructor-arg name="name" value="lucy"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="user3" class="www.test.bean.User">
<constructor-arg name="name" index="0" value="jack"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="user4" class="www.test.bean.User">
<constructor-arg name="name" index="1" value="jack"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="user5" class="www.test.bean.User">
<constructor-arg name="name" index="0" type="java.lang.Integer" value="888"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>

3 p 名称空间

<!-- p名称空间注入, 走set方法
1.导入P名称空间 xmlns:p="http://www.springframework.org/schema/p"
2.使用p:属性完成注入
|-值类型: p:属性名="值"
|-对象类型: p:属性名-ref="bean名称"
-->
<bean name="user6" class="www.test.bean.User"
p:name="jerry" p:age="15" p:car-ref="car"></bean>

4 spel注入

<!--
spel注入: spring Expression Language sping表达式语言
-->
<bean name="user7" class="www.test.bean.User">
<property name="name" value="#{user6.name}"></property>
<property name="age" value="#{user.age}"></property>
<property name="car" ref="car"></property>
</bean>

7 复杂类型的注入

<!-- 复杂类型的注入 -->
<bean name="cb" class="www.test.bean.CollectionBean">
<!-- 如果数组中只准备注入一个值(对象),直接使用value|ref即可 -->
<!-- <property name="arr" value="tom"></property> -->
<!-- <property name="arr" ref="car"></property> --> <!-- array注入,多个元素注入 -->
<property name="arr">
<array>
<value>tom</value>
<value>jerry</value>
<ref bean="user4" />
</array>
</property> <!-- 如果List中只准备注入一个值(对象),直接使用value|ref即可 -->
<!-- <property name="list" value="jack"></property> -->
<!-- <property name="list" ref="user"></property> --> <!-- list注入,多个元素注入 -->
<property name="list">
<list>
<value>jack</value>
<value>lisi</value>
<value>zhangsan</value>
<ref bean="user"/>
</list>
</property> <!-- map类型注入 -->
<property name="map">
<map>
<entry key="url" value="jdbc:mysql:///spring"></entry>
<entry key="user" value-ref="user6"></entry>
<entry key-ref="user2" value-ref="user" ></entry>
</map>
</property> <!-- prperties 类型注入 -->
<property name="prop">
<props>
<prop key="url">jdbc:mysql:///spring</prop>
<prop key="class">com.mysql.jdbc.Driver</prop>
<prop key="user">root</prop>
<prop key="password">root</prop>
</props>
</property> </bean>

01-spring配置详解的更多相关文章

  1. Spring之旅第三篇-Spring配置详解

    上一篇学习了IOC的概念并初步分析了实现原理,这篇主要学习Spring的配置,话不多说,让我们开始! 一.Bean元素配置 1.1 基本配置 看一个最基本的bean配置 <bean name=& ...

  2. Spring 配置详解

    spring4配置文件详解 一.配置数据源 基本的加载properties配置文件 <context:property-placeholder location="classpath* ...

  3. spring配置详解

    1.前言 公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包.在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持 ...

  4. spring配置详解-连接池配置

    2010-08-27  一.连接池概述 数据库连接池概述: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个 应用程序的伸缩性和 ...

  5. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

  6. spring-搭建-概念-配置详解-属性注入

    1 spring介绍  三层架构中spring位置 spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还能帮其 ...

  7. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  8. Spring Boot 启动(二) 配置详解

    Spring Boot 启动(二) 配置详解 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Boot 配置 ...

  9. 【Spring】——声明式事务配置详解

    项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...

  10. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

随机推荐

  1. 关于 XML 字段内容查询

    找到个总结相当好的知识点的归纳,记在自己的博客里也方便查询 /* sql xml 入门:     --by jinjazz     --http://blog.csdn.net/jinjazz     ...

  2. 合并datagridview 条件合并行数据

    public void HeBing() { int rowsCount; int CellCount; rowsCount = FG1.Rows.Count; CellCount = FG1.Col ...

  3. React + Python 七月小说网 功能设计(二)

    概述 在通过对世面上的各种小说网站简单了解之后(PS:好多盗版网站真的好丑哦.),去除花里胡哨的功能,保留实用功能. 初步制定了以下几个功能需求,当然,所有需求功能都是我自己设计.自己评审,大不了到时 ...

  4. const 迭代器和 const_iterator (vector/set/map)

    vector: 如同一般复合类型一样,vector 迭代器也可以声明成: const vector<int>::iterator it1 = v.begin(); vector<in ...

  5. GN算法---《Community structure in social and biological networks》这篇论文讲了什么?

    用中文记下这篇论文的大致意思,以防止忘了.好记性不如烂笔头! 摘要:最近的一些研究在研究社交网络或WWW.研究者都集中于研究网络的“小世界性”,“幂率分布特性”,“网络传递性”(聚类性吧).本文提出网 ...

  6. 解决因为链表过长,sql查询慢的问题

    /** * 解决因为链表过长,sql查询慢的问题 * 使用分治算法,先切分链表,然后查询结果,最后合并结果 *  * @author lingpy * @since 1.0 */public clas ...

  7. UML之用例图详解

    原文链接:https://blog.csdn.net/mj_ww/article/details/53020080 UML,即Unified Model Language,统一建模语言.百度百科对他的 ...

  8. Python3之pickle模块

    用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,l ...

  9. SDUT OJ 数据结构实验之二叉树五:层序遍历

    数据结构实验之二叉树五:层序遍历 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  10. AtCoder - 2568 最小割

    There is a pond with a rectangular shape. The pond is divided into a grid with H rows and W columns ...