使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
创建一个工厂,可以用 getBean()获取一个交给spring管理的类实例.

XML配置文件:
bean标签里面id代表名字(name和id差不多,有一些区别),getBean就需要这个id.
class 代表用哪一个类生成实例对象.
init-method 可以指定对象被实例化之后执行的一个方法,需要在类里面实现这个方法
destroy-method 指定对象被销毁之前执行的方法,(前提:是单例(默认就是单例),而且在工厂关闭时才会被销毁.)
scope 代表bean的作用范围:
  singleton: 默认, 单例模式
  prototype: 多例模式
  request: 应用在web项目中,创建之后放到request范围中
  session: 应用在web项目中,创建之后放到session范围中
  globalsession: 应用在web项目中,必须在porlet环境下使用,如果没有这种环境,那么他就相当于session

属性注入:
  构造方法方式: 首先需要声明类的构造函数, 然后在配置里面如:
  <bean id="userService" class="com.smile.myweb.UserServiceImpl" scope="prototype">
    <constructor-arg name="name" value="哈哈"/>
    <constructor-arg name="age" value="18"/>
  </bean>

set方法方式:需要声明set方法,然后配置:
  <bean id="userService" class="com.smile.myweb.UserServiceImpl" scope="prototype">
    <property name="name" value="哈哈"/>
    <property name="age" value="18"/>
  </bean>
  (注意如果属性是一个对象类型,就需要用ref来设置bean的id或name,value是赋普通值用的)

p名称空间的方式(spring2.5以后)首先需要引入 xmlns:p="http://www.springframework.org/schema/p"
  然后用p:user="user"赋值普通属性或者用p:user-ref="user"赋值对象属性.

SpEL的方式属性注入:value=#{'String'},字符串类型需要用单引号,对象类型直接写bean的id,也可以使用对象的属性或者方法等进行赋值.

集合类型的属性注入可以这么声明(set, map 同理):
  <property name="user">
    <list>
      <value>王五</value>
      <value>李四</value>
    </list>
  </property>

在xml配置文件中引入别的配置文件 <import resource="applicationContext2.xml"/>

==============================================================================

注解方式IOC:
需要在xml里面配置<context:component-scan base-package="com.smile.myweb"/>

@Component : 修饰一个类,把类交给springIOC容器(相当于<bean>), 里面value相当于类的id.
  @Controller : 衍生注解,web层
  @Service : 衍生注解,业务层
  @Repository : 衍生注解,持久层

初始化方法的注解@PostConstruct, 加在init方法上,相当于init-method
销毁方法的注解@PreDestroy, 加在destroy方法上,相当于destroy-method

bean作用范围的注解:@Scope, 默认是singleton,prototype是多例

属性注入的注解:
@Value : 设置普通属性的值
@Autowired : 设置对象属性的值(默认是按类型来注入对象的,如果需要按id注入,需要搭配@Qualifier(value="beanId"))
(@Resource相当于 @Autowired+@Qualifier,里面的name就相当于beadId,这个是spring实现的规范)

Java : Spring基础 IOC的更多相关文章

  1. Java Spring的IoC和AOP的知识点速记

    Spring简介 Spring解决的最核心的问题就是把对象之间的依赖关系转为用配置文件来管理,这个是通过Spring的依赖注入机制实现的. Spring Bean装配 1. IOC的概念以及在Spri ...

  2. Spring基础[IOC/DI、AOP]

    一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...

  3. [转]Java Spring的Ioc控制反转Java反射原理

    转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc ...

  4. Spring基础——IOC九种bean声明方式

    Spring简介 Spring不是服务于开发web项目的功能,或业务.而是服务于项目的开发,方便各层间的解耦调用,方便对类的批量管理,是提高软件开发效率,降低后期维护成本的框架. Spring的核心思 ...

  5. 【JAVA SPRING】IOC与AOP

    IOC(注入)有三种类型: 构造函数注入: 属性注入: 接口注入: JAVA反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的 ...

  6. Java : Spring基础 AOP

    简单的JDK动态代理例子(JDK动态代理是用了接口实现的方式)(ICar是接口, GoogleCar是被代理对象, MyCC是处理方法的类): public class TestCar { publi ...

  7. Spring学习笔记(一) Spring基础IOC、AOP

    1.       注入类型 a)       Spring_0300_IOC_Injection_Type b)       setter(重要) c)       构造方法(可以忘记) d)     ...

  8. Java之Spring基础与IoC

    Spring About Spring 开源免费框架,轻量级,非入侵式框架.Spring就是一个轻量级的控制反转(IOC)和面向切片编程(AOP)的框架 Maven repo:Spring Web M ...

  9. Java回顾之Spring基础

    第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...

随机推荐

  1. WebService性能测试

    什么是WebService?(本文也会在最下面通俗的介绍) 这里给一个站内大哥的讲解:http://www.cnblogs.com/Leo_wl/archive/2010/05/20/1740205. ...

  2. Scrum团队开发

    Scrum学习心得 什么是scrum Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主 ...

  3. Glide实现查看图片和保存图片到手机

    两种方式, 推荐方式一 方式一 downloadOnly 创建一个 ImageActivity public class ImageActivity extends AppCompatActivity ...

  4. androidtab

    https://github.com/H07000223/FlycoTabLayout tensorflow https://github.com/topics/tensorflow-examples ...

  5. SQL点点滴滴_唯一索引设计指南-转载

    唯一索引能够保证索引键中不包含重复的值, 从而使表中的每一行从某种方式上具有唯一性, 只有当唯一性是数据本身的特征时, 指定唯一索引才有意义. 例如, 如果您希望确保 HumanResources.E ...

  6. Python文件夹与文件的操作 ZZ

    最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...

  7. LeetCode-Maximal Rectangle [学以致用] ZZ

    http://www.cnblogs.com/lichen782/p/leetcode_maximal_rectangle.html 题目: Given a 2D binary matrix fill ...

  8. JQuery里ajax的表单传值serialize()用法

          本文导读:在jQuery中,当我们使用ajax时,常常需要拼装 input数据以键值对(Key/Value)的形式发送到服务器,用JQuery的serialize方法可以轻松的完成这个工作 ...

  9. SAP Cloud for Customer Sales Order Requested Date的业务含义和实现

    我们在创建Sales order销售订单时,需要指定一个RequestedDate: 这个字段绑定到了BO字段:CustomerQuote.RequestedFulfillmentPeriod.Tim ...

  10. 阅读Configuration源码

    一.阅读类注释 ①.Configuration的实例允许应用程序使用指定的属性映射文件来创建一个SessionFactory. ②.通常在一个应用程序中创建一个单一的Configuration对象,· ...