Spring 的core Container(Spring的核心容器)有四大部分:bean、context、core、expression

在进行Bean的配置时候,需要添加四个jar包 如下:

  

  分别对应着四大核心部分,最后一个是Apache的日志接口。

  今天先了解IOC和DI:

   1、IOC(反转控制):反转资源获取的方向。传统的资源查找是组件向容器请求查找资源。

               IOC则是容器主动将资源推送给它管理的组件,组件所要做的是选择一种合适的方式接受资源。

                在完成添加后,对Spring 的配置文件进行一个最简单的Bean的配置.

    1.在项目中添加Source Folder文件(个人习惯)

    2.新建一个配置文件.以xml结尾,这里命名为application.xml

    3.在配置文件里写入头部的配置:

<?xml version="1.0" encoding="UTF-8"?>
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" </bean>

    4.在声明完配置之后,进行简单的编写

      (1).首先先声明一个对象,这里命名为:User,并有name,age一个String,一个int类型的属性,并进行setter/getter

      

         (2).Spring的基本配置

          id:在spring配置里,id和name属性都能定义bean元素的名称

          可以使用name属性为bean元素起多个名,之间可以使用空格或者逗号隔开(不推荐)。

          在开发中,尽量使用id定义bean元素名称

         class:则是该id所对应的类,class里所写的一定是要类的完全限定名

      (3) 编写main方法,获取User对象

  

        使用ApplicationContext获取IOC容器,参数所需写的是配置文件的名称

      使用ApplicationContext对象的getBean方法取得Bean对象,参数写的是第三步填写的唯一标识id

       打印user,即可获取user对象的地址

  以上是SpringIOC容器配置Bean的简单步骤!

  2、DI(依赖注入):IOC的另一种表述方式,组件以一些预先定义好的方式接受来自容器的资源注入。

       Spring中支持三种依赖注入方式:1、属性注入   2、构造器注入  3、工厂方法注入

     

    2.1 属性注入:属性注入即通过Setter方法注入Bean的属性值或依赖的对象。 使用<property>元素

  <bean id="user" class="com.spring.ioc.User" scope="singleton">
<!-- 通过Setter方法注入 是开发中最常用的方式 name代表属性名称 value代表属性值 -->
<property name="age" value=""></property>
</bean>

     2.2构造方法注入:通过构造方法注入Bean的属性值或者依赖的对象,保证Bean在实例化后能使用。

        构造器在<constructor-arg>元素里声明属性。注意:该元素没有name属性。

 <!-- 使用构造器进行属性注入  前提是要有构造方法 带参数
value:属性值
index:索引位置
type:数据类型
为了区分重载方法的构造器,使用index会更好
-->
<bean id="car" class="com.spring.ioc.Car">
<constructor-arg value="baoma" index="" type="String"></constructor-arg>
<constructor-arg value="" index="" type="int"></constructor-arg>
</bean>

    同时,也可以使用 ref属性建立bean之间的关系。

 <bean id="user3" class="com.spring.ioc.User">
<property name="name" value="tom"></property>
<property name="age" value=""></property>
<property name="car" ref="car"></property>
</bean>

    输出的结果为:User [age=13, name=tom, car=Car [carname=baoma, carprice=134]]

     上面的ref引用的是外部bean,也就意味着我们可以用内部bean,如下代码:(不能被外部Bean引用)

  <bean id="user3" class="com.spring.ioc.User">
<property name="name" value="tom"></property>
<property name="age" value=""></property>
<!-- <property name="car" ref="car"></property> -->
<!-- 内部bean -->
<property name="car">
<bean id="carbean" class="com.spring.ioc.Car">
<constructor-arg value="baoma" index="" type="String"></constructor-arg>
<constructor-arg value="" index="" type="int"></constructor-arg>
</bean>
</property>
</bean>

   配置集合属性的值

   一般使用如<list>、<set>、<map>来配置集合属性。

    而我们在集合属性中能通过<value>指定简单的常量值。也能使用<ref>指定其他Bean的引用。甚至能用内部Bean.

 <!-- 配置集合属性
能使用list set等集合元素的属性
能通过<value>的标签指定简单的常量,也可以使用ref引用其他Bean,也可以进行内部Bean
-->
.....省略Bean配置...
<bean id="users" class="com.spring.ioc.User">
<property name="name" value="zhansan"/>
<property name="age" value=""/>
<property name="car">
<list>
<ref bean="car"/>
<ref bean="carbean"/>
<bean id="carbean2" class="com.spring.ioc.Car">
<constructor-arg value="falali" index="" type="String"></constructor-arg>
<constructor-arg value="" index="" type="int"></constructor-arg>
</bean>
</list>
</property>

   用properites配置Map的属性值

    <!-- 配置properties属性值
使用props 和prop字节点尾属性赋值
-->
<bean id="dataSource" class="com.spring.ioc.DataSource">
<property name="properties">
<props>
<prop key="user">root</prop>
<prop key="password">test</prop>
<prop key="jdbcUrl">jdbc:mysql://test</prop>
</props>
</property>
</bean>

    

SpringIOC容器装配Bean的更多相关文章

  1. Spring IOC 一——容器装配Bean的简单使用

    下文:SpringIOC 二-- 容器 和 Bean的深入理解 写在前面 这篇文章去年写的,缘起于去年某段时间被领导临时"抓壮丁"般的叫过去做java开发,然后在网上找了一个 Sp ...

  2. 05_IOC容器装配Bean(注解方式)

    IOC容器装配Bean(注解方式) 1.使用注解方式进行Bean注册 xml 方式: <bean id="" class=""> spring2.5 ...

  3. 04_IOC容器装配Bean(xml方式)

    IOC容器装配Bean(xml方式) 1.Spring 提供配置Bean三种实例化方式 1)使用类构造器实例化(默认无参数) <bean id="bean1" class=& ...

  4. Spring容器装配Bean的三种方式

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  5. IoC容器装配Bean(xml配置方式)(Bean的生命周期)

    1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...

  6. spring-Ioc容器与bean

    1. spring 的beanFactory容器 bean.xml  HelloWorld实体类与spring教程学习笔记1相同 public static void main(String[] ar ...

  7. SpringIOC 二—— 容器 和 Bean的深入理解

    上文:Spring IOC 一--容器装配Bean的简单使用 上篇文章介绍了 Spring IOC 中最重要的两个概念--容器和Bean,以及如何使用 Spring 容器装配Bean.本文接着记录 S ...

  8. Spring技术内幕_IOC容器载入Bean定义资源文件

    转自:http://blog.csdn.net/chjttony/article/details/6259723 1.当spring的IoC容器将Bean定义的资源文件封装为Spring的Resour ...

  9. SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean

    SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean 在SpringBoot中开发AspectJ时,使用CTW的方式来织入代码,由于采用这种形式,切面Bean ...

随机推荐

  1. POJ 1321 棋盘问题(搜索的方式)

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  2. MySQL 存储过程返回多个值

    MySQL  存储过程返回多个值   在本教程中,您将学习如何编写/开发返回多个值的存储过程. MySQL存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程 ...

  3. 多重线性回归 (multiple linear regression) | 变量选择 | 最佳模型 | 基本假设的诊断方法

    P133,这是第二次作业,考察多重线性回归.这个youtube频道真是精品,用R做统计.这里是R代码的总结. 连续变量和类别型变量总要分开讨论: 多重线性回归可以写成矩阵形式的一元一次回归:相当于把多 ...

  4. css实现垂直水平居中的方法(个数不限)?

    方法一:使用绝对定位 大家都知道margin:0 auto;能够实现水平居中,但却不知道margin:0 auto;也是可以实现垂直居中的: 给居中元素添加如下样式: .Absolute-Center ...

  5. Linux重要命令总结

    tar命令后面最常跟的参数 -zxvf 是什么意思? z 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压 x 从 tar 包中把文件提取出来,单词extract的含义是 ...

  6. 配置Spring MVC - 2019

    未完 软件环境:Eclipse-EE 1. 创建Maven Project 2. pom.xml - [更新日期19/03/31] <dependencies> <dependenc ...

  7. 解决Git Revert操作后再次Merge代码被冲掉的问题

    转:https://blog.csdn.net/paul_wei2008/article/details/77477932 https://blog.csdn.net/cxn945/article/d ...

  8. 搭建iview环境

    一.最快捷方式安装: $ npm install iview --save 二.一般在 webpack 入口页面 main.js 中如下配置: import Vue from 'vue'; impor ...

  9. IIS Service Unavailable HTTP Error 503. The service is unavailable.

    IIS突然报了上图这样一个错误,很意外,这问题的来源百度上有多个版本,处理的办法几乎都是一样的,你可以通过下边这个链接去查看, https://www.cnblogs.com/fri-yu/p/407 ...

  10. CentOS 中安装和卸载 Emacs

    日志更新记录: [1] 增加 CentOS7.2 (内核版本:3.10.0-514.16.1.el7.x86_64)下Emacs25.2 的安装过程,它与本文的步骤完全一样. Emacs 版本:htt ...