使用 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. 使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

    基本概念 使用SSM(Spring,SpringMVC和Mybatis) 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod  ...

  2. easyui的解析器Parser

    平时使用easyui做框架开发时,都知道easyui的模块组件能通过属性方法或js方法来渲染,本质上是通过parser解析器来处理实现的,因为多数情况下都是自动触发完成整个页面的解析,所以没有感觉到它 ...

  3. Microsoft Office ->> 完整卸载Office 2007

    今天用GHOST安装了Windows 8.1,结果发现预装了Office 2007,而且这个GHOST系统的Office 2007还不是很正规的安装手法安装的.它没有在注册表中注册.在打开控制面板后发 ...

  4. jQuery Validate 无法验证 chosen-select元素

    chosen-select元素执行了chosen()方法后,为select元素加上了style="display: none;"进行隐藏,然后重新构造了一个看起来像select的下 ...

  5. javascript小练手

    1.做一个小图标在界面中通过按钮可以变大 变小 变色 变圆 <!DOCTYPE html> <html lang="en"> <head> &l ...

  6. 在Java中如何进行BASE64编码和解码

    在Java中如何进行BASE64编码和解码 //在Java中如何进行BASE64编码和解码 package me.xzh.study.sun.misc.BASE64; import sun.misc. ...

  7. Linux:CentOS7卸载mysql

    步骤 方法一. 1.查看mysql安装 rpm -qa|grep -i mysql 2.卸载前关闭mysql服务 rpm -ev --nodeps mysql-community-release-el ...

  8. JAVA二叉树递归构造、二叉树普通遍历及递归遍历

    二叉树类: package com.antis.tree; public class BinaryTree { int data; //根节点数据 BinaryTree left; //左子树 Bin ...

  9. 19、配置嵌入式servlet容器(下)

    使用外置的Servlet   嵌入式Servlet容器:应用打成可执行的j ar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂         使用定制器[ServerProperti ...

  10. C#与C++通过socket传送结构体

    C#服务端: using System; using System.Net.Sockets; using System.Net; using System.IO; using System.Diagn ...