spring框架的组件结构图



IOC(Inversion of Control):反转控制,思想是反转资源获取方向,传统的资源查找方向是组件向容器发起请求资源查找,作为回应,容器适时的返回资源,IOC则相反,容器主动将资源推送给它所管理的组件,组件所要做的就是选择一种合适的方式接受资源。

DI(Dependency Injection):依赖注入,(IOC另一种表述)组件以一些预先定义的方式来自容器的资源注入。

spring用到的jar包

1、创建Bean

public class HelloSpring {
private String name; public void setName(String name) {
System.out.println("setname= " + name);
this.name = name;
} public void Hello() {
System.out.println("hello" + name);
} public HelloSpring() {
// TODO Auto-generated constructor stub
System.out.println("constructor start。。。。 ");
}

2、在根目录下创建New Spring Bean Definition file xml文件,通过属性方法注入

   <!-- 配置beans class :Bean的全类名,通过反射的方式在IOC容器中创建Bean,所以Bean中必须要有无参数的构造器 id:标识容器中的Bean,id唯一 -->
<bean id="helloSpring" class="com.test.HelloSpring">
<!-- property 的name属性和beans的set方法相对应 -->
<property name="name" value="spring"></property>
</bean>

3、使用构造方法注入,在constructor-arg元素里面声明属性值

3.1 新建User Bean

public class User {
private String name;
private int age;
private double money;
private String no; public User(String name, double money, String no) {
super();
this.name = name;
this.money = money;
this.no = no;
} public User(String name, int age, String no) {
super();
this.name = name;
this.age = age;
this.no = no;
} @Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", money=" + money
+ ", no=" + no + "]";
}
}

3.2 通过构造方法注入

//使用构造器注入属性值,可以指定参数的位置和参数的类型,以区分重载的构造器 index:位置 type:类型
<bean id="user1" class="com.test.User">
<constructor-arg value="aa" index="0"></constructor-arg>
<constructor-arg value="10" index="1" type="double"></constructor-arg>
<constructor-arg value="123456" index="2"></constructor-arg>
</bean> <bean id="user2" class="com.test.User">
<constructor-arg value="cc"></constructor-arg>
<constructor-arg value="10" type="int"></constructor-arg>
<constructor-arg value="78901" ></constructor-arg>
</bean>

4、创建spring IOC容器对象,并从IOC容器获取bean实例,然后调用Bean中的方法

  //ApplicationContext IOC容器
//ClassPathXmlApplicationContext:是ApplicationContext接口实现类,该实现从类路径下来加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //利用id定位到IOC容器的bean
HelloSpring hello = (HelloSpring) ctx.getBean("helloSpring"); //利用类型获取,不推荐使用
//HelloSpring hello = ctx.getBean(HelloSpring.class); // 调用类的方法
hello.Hello(); User use = (User) ctx.getBean("user1");
System.out.println(use); use = (User) ctx.getBean("user2");
System.out.println(use);

5、运行效果

一月 17, 2017 10:38:52 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml] constructor start。。。。
setname= spring
hellospring
User [name=aa, age=0, money=10.0, no=123456]
User [name=cc, age=10, money=0.0, no=78901]

此系列学习源码:传送门

spring学习-1的更多相关文章

  1. spring 学习之 bean 的注入方式 property和constructor-arg的使用方式

    spring 学习之 bean 的注入方式 property和constructor-arg的使用方式. bean的注入方式: property 注入是: 通过setxx方法注入. construct ...

  2. Spring学习之AOP总结帖

    AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组 ...

  3. Spring学习之第一个AOP程序

    IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对 ...

  4. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  5. Spring学习 Ioc篇(一 )

    一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现.就从Ioc篇开始学习. ...

  6. Spring学习(三)——Spring中的依赖注入的方式

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

  7. Spring学习(二)——Spring中的AOP的初步理解[转]

      [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...

  8. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  9. Spring学习8-Spring事务管理

      http://blog.sina.com.cn/s/blog_7ffb8dd501014e0f.html   Spring学习8-Spring事务管理(注解式声明事务管理) 标签: spring注 ...

  10. Spring学习之Ioc控制反转(1)

    开始之前: 1. 本博文为原创,转载请注明出处 2. 作者非计算机科班出身,如有错误,请多指正 ---------------------------------------------------- ...

随机推荐

  1. 去除app中的标题栏

    我之前一直用的是在oncreate方法中添加 requestWindowFeature(Window.FEATURE_NO_TITLE),并且必须写在setContentView(R.layout.a ...

  2. 洛谷P2661 信息传递==coedevs4511 信息传递 NOIP2015 day1 T2

    P2661 信息传递 题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知 ...

  3. 【BZOJ2422】Times 树状数组

    [BZOJ2422]Times Description 小y作为一名资深的dotaer,对视野的控制有着深刻的研究.每个单位在一段特定的时间内会出现在小y的视野内,除此之外的时间都在小y看不到的地方. ...

  4. 【BZOJ4070】[Apio2015]雅加达的摩天楼 set+最短路

    [BZOJ4070][Apio2015]雅加达的摩天楼 Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼 ...

  5. 打包合并多个dll

    复杂项目中会引用大量的第三方dll文件,为了便于管理会尝试把相关打包合并成一个dll文件. 推荐使用ILMerge,如需使用网上自行下载. 使用方法: cd 安装目录 ILmerge /target: ...

  6. WCF基础之承载服务和生成客户端

    wcf的承载有三种iis.was和自承载,它们如何承载园子里有很多,就不多赘述. 自iis7以后iis支持http和非http的协议,使用iis承载服务与其他两种承载相比,我觉的最明显的是was和自承 ...

  7. ConfigurableBeanFactory

    ConfigurableBeanFactory :关系如下 在上面这样的一个关系图中可以先看下SingletonBeanRegistry的源代码: package org.springframewor ...

  8. amoeba安装与简单使用(一)

    1.我的环境Amoeba 2.0.1 -- CentOS release 6.8 (Final) -- 10.20.49.254Mysql 5.1.73 -- CentOS release 6.4 ( ...

  9. Modeling of Indoor Positioning Systems Based on Location Fingerprinting

    Kamol Kaemarungsi and Prashant Krishnamurthy Telecommunications Program School of Information Scienc ...

  10. 教你管理SQL数据库系列(1-4)

    原文 教你管理 SQL Server 数据库(1)数据库的结构  http://bbs.51cto.com/thread-1084951-1.html教你管理 SQL Server 数据库(2)系统数 ...