java-Spring-IOC

//1. 创建 Spring 的 IOC 容器
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  
//2. 从 IOC 容器中获取 bean 的实例
HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld3");
  
//根据类型来获取 bean 的实例: 要求在  IOC 容器中只有一个与之类型匹配的 bean, 若有多个则会抛出异常. 
//一般情况下, 该方法可用, 因为一般情况下, 在一个 IOC 容器中一个类型对应的 bean 也只有一个.
//3. 使用 bean
helloWorld.hello();

//以下为beans.xml配置

<?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:util="http://www.springframework.org/schema/util"
 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
  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
 
 <!-- 配置一个 bean -->
 <bean id="helloWorld" class="com.atguigu.spring.helloworld.HelloWorld">
    <!-- 为属性赋值 -->
    <property name="user" value="Jerry"></property>
 </bean>
 
 <!-- 配置一个 bean -->
 <bean id="helloWorld2" class="com.atguigu.spring.helloworld.HelloWorld">
    <!-- 为属性赋值 -->
    <!-- 通过属性注入: 通过 setter 方法注入属性值 -->
    <property name="user" value="Tom"></property>
 </bean>
 
 <!-- 通过构造器注入属性值 -->
 <bean id="helloWorld3" class="com.atguigu.spring.helloworld.HelloWorld">
    <!-- 要求: 在 Bean 中必须有对应的构造器.  -->
    <constructor-arg value="Mike"></constructor-arg>
 </bean>
 
 <!-- 若一个 bean 有多个构造器, 如何通过构造器来为 bean 的属性赋值 -->
 <!-- 可以根据 index 和 value 进行更加精确的定位. (了解) -->
 <bean id="car" class="com.atguigu.spring.helloworld.Car">
    <constructor-arg value="KUGA" index="1"></constructor-arg>
    <constructor-arg value="ChangAnFord" index="0"></constructor-arg>
    <constructor-arg value="250000" type="float"></constructor-arg>
 </bean>
 
 <bean id="car2" class="com.atguigu.spring.helloworld.Car">
    <constructor-arg value="ChangAnMazda"></constructor-arg>
    <!-- 若字面值中包含特殊字符, 则可以使用 DCDATA 来进行赋值. (了解) -->
    <constructor-arg>
       <value><![CDATA[<ATARZA>]]></value>
    </constructor-arg>
    <constructor-arg value="180" type="int"></constructor-arg>
 </bean>
 
 <!-- 配置 bean -->
 <bean id="dao5" class="com.atguigu.spring.ref.Dao"></bean>

<bean id="service" class="com.atguigu.spring.ref.Service">
    <!-- 通过 ref 属性值指定当前属性指向哪一个 bean! -->
    <property name="dao" ref="dao5"></property>
 </bean>
 
 <!-- 声明使用内部 bean -->
 <bean id="service2" class="com.atguigu.spring.ref.Service">
    <property name="dao">
       <!-- 内部 bean, 类似于匿名内部类对象. 不能被外部的 bean 来引用, 也没有必要设置 id 属性 -->
       <bean class="com.atguigu.spring.ref.Dao">
          <property name="dataSource" value="c3p0"></property>
       </bean>
  </property>
 </bean>
 
 <bean id="action" class="com.atguigu.spring.ref.Action">
    <property name="service" ref="service2"></property>
    <!-- 设置级联属性(了解) -->
    <property name="service.dao.dataSource" value="DBCP2"></property>
 </bean>
 
 <bean id="dao2" class="com.atguigu.spring.ref.Dao">
    <!-- 为 Dao 的 dataSource 属性赋值为 null, 若某一个 bean 的属性值不是 null, 使用时需要为其设置为 null(了解) -->
    <property name="dataSource"><null/></property>
 </bean>
 
 <!-- 装配集合属性 -->
 <bean id="user" class="com.atguigu.spring.helloworld.User">
    <property name="userName" value="Jack"></property>
    <property name="cars">
     <!-- 使用 list 元素来装配集合属性 -->
     <list>
        <ref bean="car"/>
        <ref bean="car2"/>
     </list>
  </property>
 </bean>
 
 <!-- 声明集合类型的 bean -->
 <util:list id="cars">
    <ref bean="car"/>
    <ref bean="car2"/>
 </util:list>
 
 <bean id="user2" class="com.atguigu.spring.helloworld.User">
    <property name="userName" value="Rose"></property>
    <!-- 引用外部声明的 list -->
    <property name="cars" ref="cars"></property>
 </bean>
 
 <bean id="user3" class="com.atguigu.spring.helloworld.User"
  p:cars-ref="cars" p:userName="Titannic"></bean>
  
 <!-- bean 的配置能够继承吗 ? 使用 parent 来完成继承 --> 
 <bean id="user4" parent="user" p:userName="Bob"></bean>
 
 <bean id="user6" parent="user" p:userName="维多利亚"></bean>
 
 <!-- 测试 depents-on --> 
 <bean id="user5" parent="user" p:userName="Backham" depends-on="user6"></bean>
 
</beans>

时间: 2024-10-09 21:24:41

java-Spring-IOC的相关文章

java spring 学习

Java Spring AOP用法 http://www.cnblogs.com/flowwind/p/4782606.html Java Spring IOC用法 http://www.cnblogs.com/flowwind/p/4772375.html 原文地址:https://www.cnblogs.com/lijiasnong/p/8393794.html

Java Spring AOP用法

Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制反转),另外一个便是Aop(面向切面编程),IoC有助于应用对象之间的解耦,AOP则可以实现横切关注点(如日志.安全.缓存和事务管理)与他们所影响的对象之间的解耦. 1.简介 AOP主要包含了通知.切点和连接点等术语,介绍如下 通知(Advice) 通知定义了切面是什么以及何时调用,何时调用包含以下几种 Before 在方法被调用之前

Java面试--Spring技术要点--Spring IOC

7  Spring IOC(依赖注入)的方式 Setter方法注入 构造器方法注入 工厂方法注入(实例工厂/静态工厂) 自动装配(需要开启配置,不建议使用) http://blessht.iteye.com/blog/1162131 8  IOC方式建议(构造器注入还是 Setter方法注入) 两种依赖方式都可以使用,构造器注入和Setter方法注入.最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖. 9  什么是Spring beans Springbeans是那些形成S

Spring IOC 方式结合TESTGN测试用例,测试简单java的命令模式

java命令模式: 可以命令("请求")封装成一个对象,一个命令对象通过在特定的接收着上绑定一组动作来封装一个请求.命令对象直接把执行动作和接收者包进对象中,只对外暴露出执行方法的的接口,从而简单的达到动作的请求者和动作的执行者解耦的目的. 下面用一个简单的实例测试简单的命令模式,同时采用spring ioc的方式+testNG的测试方式,实现遥控器的遥控开灯的命令模式实现和测试. 1.建立命令接口,包含执行方法,命令对象必须要实现的,执行方法就是暴露的接口方法,提供于接收者调用. p

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

Spring简介 Spring解决的最核心的问题就是把对象之间的依赖关系转为用配置文件来管理,这个是通过Spring的依赖注入机制实现的. Spring Bean装配 1. IOC的概念以及在Spring容器中如何进行IOC的操作. IOC:Inversion of Control,控制反转.在Java开发中,IOC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制,这称为控制反转,就是被调用类的实例由原先的调用类控制创建.销毁现在转变成由Spring的容器管理. 2. Spring容器

Spring Ioc 基于Java的容器配置

一.基于Java的容器配置 @Configuration & @Bean 注解: 在Spring的新的Java-Configuration的中间产物是基于类的@Configuration的注解和基于方法的@Bean注解.         @Bean注解是用来指明方法的实例化,配置和初始化一个对象是通过Spring的IoC容器来管理的.对于那些熟悉使用以XML配置Spring的<beans /> 标签,@Bean注解和<bean />标签是起相同作用的.你能和Spring的@

[Java复习] Spring IoC

1. Spring bean的生命周期? 1. 对Bean进行实例化(相当于new) 对于BeanFactory: 当客户向容器请求一个尚未初始化的bean(或初始化bean需要注入另外一个尚未初始化的依赖bean)时,容器会调用createBean进行实例化. 例如XmlBeanFactory通过Resource装载Spring配置信息启动Ioc容器,然后通过BeanFactory.getBean获取Bean.注意是,启动IoC容器时,不会初始化Bean,初始化是在getBean调用时. 容器

spring IOC

本节要点: IOC容器概述 IOC容器的工作原理 BeanFactory接口及常用实现类XmlBeanFactory ApplicationContext接口及常用实现类 BeanFactory和ApplicationContext的区别 1  IOC容器概述 Spring的IoC容器实现了控制反转,即在开发过程中,开发人员不需要关心容器是怎样的,也不需要调用容器的任何API.容器会自动进行被管理对象的初始化及对象之间依赖关系的维护. 在Spring中,最重要的是两个包,提供了IoC容器的基本功

Spring IOC理解

内容来自http://blog.csdn.net/qq_22654611/article/details/52606960 一.分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1.IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技

谈谈对Spring IOC的理解(转)

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解. 一.分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinniansh