Spring的核心之IoC容器创建对象

Spring的Ioc容器,是Spring的核心内容:   作用:对象的创建和处理对象的依赖关系。

Spring容器创建对象有以下几种方式:

  1:调用无参数的构造器

 <!-- 默认无参的构造器 --> <bean id="user1" class="com.bie.po.User"></bean>  

  2:调用有参数构造器

 <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->  <bean id="user" class="com.bie.po.User">          <constructor-arg value="100" index="0" type="int"></constructor-arg>          <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg> </bean>

    在Spring中通过配置文件使用ref元素引用其他JavaBean的实例对象

<!-- 定义一个字符串,值是'张三';String str=new String("张三"); --> <bean id="str" class="java.lang.String">       <constructor-arg value="张三"></constructor-arg>      </bean> <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String--> <bean id="user" class="com.bie.po.User">      <constructor-arg value="100" index="0" type="int"></constructor-arg>      <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>    </bean>

完整的applicationContext.xml(bean.xml)配置文件如下所示:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xsi:schemaLocation="
 7         http://www.springframework.org/schema/beans
 8         http://www.springframework.org/schema/beans/spring-beans.xsd
 9         http://www.springframework.org/schema/context
10         http://www.springframework.org/schema/context/spring-context.xsd">
11      
12      
13      <!-- IoC容器的配置,要创建的所有的对象都配置在这里 -->
14      
15      <!-- 默认无参的构造器 -->
16      <bean id="user1" class="com.bie.po.User"></bean>
17      
18      <!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
19      <bean id="str" class="java.lang.String">
20         <constructor-arg value="张三"></constructor-arg>     
21      </bean>
22      
23      <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
24      <bean id="user" class="com.bie.po.User">
25          <constructor-arg value="100" index="0" type="int"></constructor-arg>
26          <!-- <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
27           -->
28          <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
29          
30      </bean>
31 </beans>     

3:工厂类创建对象

    3.1:工厂类,静态方法创建对象

 <!-- 3:工厂类创建对象          工厂类,实例方法,必须先创建工厂          再创建user对象,用factory的实例方法     --> <bean id="factory" class="com.bie.po.ObjectFactory"></bean> <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>   

    3.2:工厂类,非静态方法创建对象

<!--          4:工厂类,静态方法,静态方法不需要实例化对象,             class指定的就是工厂类型             factory-method一定是工厂里面的静态方法     --> <bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>

完整的applicationContext.xml(bean.xml)配置文件如下所示:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xsi:schemaLocation="
 7         http://www.springframework.org/schema/beans
 8         http://www.springframework.org/schema/beans/spring-beans.xsd
 9         http://www.springframework.org/schema/context
10         http://www.springframework.org/schema/context/spring-context.xsd">
11      
12      
13      <!-- IoC容器的配置,要创建的所有的对象都配置在这里 -->
14      
15      <!-- 默认无参的构造器 -->
16      <bean id="user1" class="com.bie.po.User"></bean>
17      
18      <!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
19      <bean id="str" class="java.lang.String">
20         <constructor-arg value="张三"></constructor-arg>     
21      </bean>
22      
23      <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
24      <bean id="user2" class="com.bie.po.User">
25          <constructor-arg value="100" index="0" type="int"></constructor-arg>
26          <!-- <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
27           -->
28          <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
29      </bean>
30      
31      <!-- 3:工厂类创建对象 
32          工厂类,实例方法,必须先创建工厂
33          再创建user对象,用factory的实例方法    
34      -->
35      <bean id="factory" class="com.bie.po.ObjectFactory"></bean>
36      <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>    
37      
38      <!-- 4:工厂类,静态方法,静态方法不需要实例化对象,所以直接引用工厂类的class和方法 -->
39      <bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>
40 </beans>     

掌握Spring核心IoC容器,由简到繁,faghting~~~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

java并发之辅助类semaphore

1183
来自专栏大前端开发

理解和使用ES6中的Symbol

ES6中引入了一种新的基础数据类型:Symbol,不过很多开发者可能都不怎么了解它,或者觉得在实际的开发工作中并没有什么场景应用到它,那么今天我们来讲讲这个数据...

1263
来自专栏Ryan Miao

SpringMVC参数校验(针对`@RequestBody`返回`400`)

SpringMVC参数校验(针对@RequestBody返回400) From https://ryan-miao.github.io/2017/05/20/s...

4264
来自专栏JackieZheng

照虎画猫写自己的Spring——自定义注解

Fairy已经实现的功能 读取XML格式配置文件,解析得到Bean 读取JSON格式配置文件,解析得到Bean 基于XML配置的依赖注入 所以,理所当然,今天该...

2469
来自专栏一个会写诗的程序员的博客

《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料

官网文档:http://www.groovy-lang.org/documentation.html Github源码:https://github.com/...

652
来自专栏osc同步分享

springmvc 其他

<!-- 配置直接转发的页面 --> <!-- 可以直接相应转发的页面, 而无需再经过 Handler 的方法. --> <mvc:view-contr...

3458
来自专栏技术小黑屋

谁来检查方法参数合法性

我们在编程中的函数或者是方法,大多数都是有参数的。参数对于方法来说是很重要的输入数据,传入的参数值的合法性影响着方法的稳定性,严重时甚至可能导致崩溃问题的出现。

782
来自专栏编程心路

一文读懂SpringMVC中的数据绑定

Struts2 和 SpringMVC 都是 Web 开发中视图层的框架,两者都实现了数据的自动绑定,都不需要我们手动获取参数然后关联到对应的属性上,下面就谈谈...

903
来自专栏Hongten

FreeMarker_模板引擎_代码自动生成器_源码下载

你可以到freemarker的官网上去,那里有很详细的介绍:http://freemarker.org/

1231
来自专栏Java后端生活

JavaWeb(十一)JavaBean

1746

扫码关注云+社区