1. IOC定义

Inversion of Control,减低计算机代码间的耦合度,对象的创建交给外部容器完成,不用再new了

2. 流程

2.1 创建Bean对象

package bean;

public class User {

	private String name;
private String email;
private String password; /**
* 省略了getters/setters
* @author Howl
*/ //构造函数
public User(String name, String email, String password) {
super();
this.name = name;
this.email = email;
this.password = password;
}
}

2.2 配置applicationContext.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 上面是约束的固定写法 --> <!-- 配置Bean对象给Spring容器 -->
<!-- id 唯一表示 -->
<!-- class 对应的Bean对象 -->
<!-- scope 作用域,单例和多例 -->
<bean id="User" class="bean.User" scope="singleton"></bean> </beans>

2.3 通过容器获取Bean对象

//通过配置文件获取上下文
applicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过上下文获取Bean对象,不用通过new方式了
User user = ac.getBean("User");

3. 其他细节

3.1 带参构造函数创建对象

<bean id="User" class="bean.User" scope="singleton">

    <!--constructor指定构造函数的参数类型、名称、第几个-->
<constructor-arg index="0" name="name" type="String" value="Howl"></constructor-arg>
<!--参数为对象时,value改为ref="" -->
</bean>

3.2 装载集合

<bean id="userService" class="bb.UserService" >
<constructor-arg >
<list>
//普通类型
<value></value>
//引用类型
<ref></ref>
</list>
</constructor-arg>
</bean>

3.3 注解

1.先引入context名称空间
xmlns:context="http://www.springframework.org/schema/context" 2.开启注解扫描器
<context:component-scan base-package=""></context:component-scan> 3.在Bean对象中添加@Component(name ="User"),就不用在配置文件中写<Bean>标签了

Spring入门(一)——IOC的更多相关文章

  1. Spring入门2. IoC中装配Bean

    Spring入门2. IoC中装配Bean 20131125 前言: 上一节学习了Spring在JavaProject中的配置,通过配置文件利用BeanFactory和ApplicationConte ...

  2. Spring入门1. IoC入门实例

    Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...

  3. Spring入门导读——IoC和AOP

    和MyBatis系列不同的是,在正式开始Spring入门时,我们先来了解两个关于Spring核心的概念,IoC(Inverse of Control)控制反转和AOP()面向切面编程. 1.IoC(I ...

  4. Spring入门及IoC的概念

    Spring入门 Spring是一个轻量级的Java开发框架,最早由Robd Johnson创建,目的为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,它是一个分层的JavaSE/EE轻量级开源 ...

  5. Spring入门 (IOC)

    1.实现原理

  6. Spring入门之IOC

    IOC/DI: Spring最核心的灵魂,IOC/DI(控制反转/依赖注入)!,这里一定要理解他,理解这个思想.我会细说什么是IOC/DI.他的思想是什么.它带来了那些好处. 进入正题,先说说什么是i ...

  7. Spring入门介绍-IOC(二)

    浅谈IOC IOC(inversion of control)是Spring的核心,贯穿始终.所谓IOC 就是有Spring来控制对象的生命周期和对象间的关系. 传统开发模式:对象之间相互依赖 IOC ...

  8. spring入门(Ioc的理解)

    spring对依赖的注入理解可以参考这篇:https://www.cnblogs.com/alltime/p/6729295.html 依赖注入和控制反转 传统的JavaEE程序中,直接在内部new一 ...

  9. Spring_第一个Spring入门案例IOC

    今天我们来写我们的第一个spring 第一步 建立一个java project 第二步 添加我们的五个jar文件 第三步 在项目中建立一个com.zk.spring包 第四步 建立我们的userser ...

  10. Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)

    Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个 ...

随机推荐

  1. CF1097G Vladislav and a Great Legend 组合、树形背包

    传送门 看到\(k\)次幂求和先用斯特林数拆幂:\(x^k = \sum\limits_{i=1}^k \binom{x}{i}\left\{ \begin{array}{cccc} k \\ i \ ...

  2. 全栈项目|小书架|服务器开发-Koa2 参数校验处理

    为什么需要做参数校验 在开发中,无论是App开发还是服务器接口开发, 我们无法去预测用户传入的数据,因此参数(数据)校验是开发中不可或缺的一环. 例如像App的注册登录表单提交页面,就要做好多层的判断 ...

  3. z7z8记录

    http://www.ypppt.com/ ppt模板地址

  4. 1+X证书学习日志——javascript打印九九乘法表(基础算法)

    /// 注意要给td加上宽高属性,不然就看不到啦 /// td{ width:100px; height:30px; border:1px solid red; }

  5. flutter报错--ProcessException: Process... gradlew.bat ...exited abnormally

    在 VScode 中 debug flutter 是遇到如下问题: ProcessException: Process "G:\demo\flutter\hello_word\android ...

  6. vue_插槽的理解和使用

    对于插槽的概念和使用,这是vue的一个难点,这需要我们静下心来,慢慢研究.以下是我这两天通过官网和其他资料的学习和使用总结出来的笔记,如有错误或者有不同见解的,欢迎留言,一起学习. 什么是插槽? 插槽 ...

  7. Python——元组

    是为了满足,某些值当被定义以后就不可修改或删除而出现的元组形式. 特点: 元组中的元素不可被修改或删除 没有独立的功能 可以进行嵌套,当嵌套方可以修改删除时,可以对嵌套方进行. 元组可以进行公共功能中 ...

  8. 【转】DATA_SECTION 和CODE_SECTION 的区别

    请问#pragma DATA_ALIGN有什么作用? 下面是我在EDMA的一个例程中摘录的几句话:#pragma DATA_ALIGN(ping,128);#pragma DATA_ALIGN(pon ...

  9. 不错的DSP和FPGA作者

    https://blog.csdn.net/wordwarwordwar/article/details/90233903

  10. python获取第前多少天的日期

    1. 显示昨天(前一天)的日期 from datetime import date, timedelta yesterday_date = (date.today() + timedelta(days ...