1、 添加maven支持

        <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>

基本的注入,只要这一个依赖项即可

2、 编写几个测试类

假设场景: 有一个程序员jimmy, 他有几台电脑, 一个宠物,每天下班回家后,宠物会用某种形式欢迎他回家.

package com.cnblogs.yjmyzz.domain;

public abstract class Computer {

    public abstract void showInfo();
}
package com.cnblogs.yjmyzz.domain;

public class MacBook extends Computer {
@Override
public void showInfo() {
System.out.println("\tApple MAC Book");
}
}
package com.cnblogs.yjmyzz.domain;

public class ThinkPad extends Computer {

    @Override
public void showInfo() {
System.out.println("\tLenovo ThinkPad");
}
}
package com.cnblogs.yjmyzz.domain;

public abstract class Pet {

    public abstract void welcomeMeToHome();
}
package com.cnblogs.yjmyzz.domain;

public class Dog extends Pet {
@Override
public void welcomeMeToHome() {
System.out.println("\twang! wang!");
}
}
package com.cnblogs.yjmyzz.domain;

import java.util.List;

public class Programmer {

    private String name;

    private Pet pet;

    private List<Computer> computers;

    public void setName(String name) {
this.name = name;
} public List<Computer> getComputers() {
return computers;
} public void setComputers(List<Computer> computers) {
this.computers = computers;
} public void setPet(Pet pet) {
this.pet = pet;
} public void show() { System.out.print("My name is " + name);
System.out.print(", and I have " + computers.size() + " computer" + (computers.size() > 1 ? "s" : "") + ":");
System.out.println();
for (Computer c : computers) {
c.showInfo();
}
System.out.println("And I have a pet, everyday,when I go home, it will welcome me by ");
pet.welcomeMeToHome(); } }

3、 spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="jimmy" class="com.cnblogs.yjmyzz.domain.Programmer">
<property name="name" value="jimmy.yang"/>
<property name="pet" ref="wangcai"/>
<property name="computers">
<list>
<ref bean="t60"/>
<ref bean="macbook_pro"/>
</list>
</property>
</bean> <bean id="t60" class="com.cnblogs.yjmyzz.domain.ThinkPad"/>
<bean id="macbook_pro" class="com.cnblogs.yjmyzz.domain.MacBook"/>
<bean id="wangcai" class="com.cnblogs.yjmyzz.domain.Dog"/> </beans>

这个配置文件SimpleBeans.xml中,一共配置了4个bean实例, 该配置被Spring容器加载后,这些对象都会被实例化(默认是单例模式实例化),并保持在容器中,需要使用的时候,可以手动通过ApplicationContext的getBean方法获取

4、 测试注入

为了注入方便,先写一个简单的工具类SpringUtils

package com.cnblogs.yjmyzz.utils;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringUtils { private static ApplicationContext applicationContext; private static ApplicationContext getContext() { if (applicationContext == null) {
applicationContext = new ClassPathXmlApplicationContext("SimpleBeans.xml"); }
return applicationContext; } public static <T> T getBean(Class<T> clazz, String beanName) { return getContext().getBean(beanName, clazz); }
}

然后就可以用这个工具类,通过getBean来获取注入的对象实例

package com.cnblogs.yjmyzz.test;

import com.cnblogs.yjmyzz.domain.Programmer;
import com.cnblogs.yjmyzz.utils.SpringUtils;
import org.junit.Test; public class TestSpring { @Test
public void testSimpleInject(){
Programmer jimmy= SpringUtils.getBean(Programmer.class,"jimmy");
jimmy.show();
} }

运行效果:
My name is jimmy.yang, and I have 2 computers:
    Lenovo ThinkPad
    Apple MAC Book
And I have a pet, everyday,when I go home, it will welcome me by  
    wang! wang!

下一篇将学习如何自动注入,以及如何使用properties属性文件来注入对象属性.

Spring 4.0.2 学习笔记(1) - 最基本的注入的更多相关文章

  1. Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用

    接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property> ...

  2. Spring实战第八章学习笔记————使用Spring Web Flow

    Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应 ...

  3. Spring实战第一章学习笔记

    Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...

  4. Spring Cloud微服务学习笔记

    Spring Cloud微服务学习笔记 SOA->Dubbo 微服务架构->Spring Cloud提供了一个一站式的微服务解决方案 第一部分 微服务架构 1 互联网应用架构发展 那些迫使 ...

  5. #Spring实战第二章学习笔记————装配Bean

    Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...

  6. 从零开始搭建.NET Core 2.0 API(学习笔记一)

    从零开始搭建.NET Core 2.0 API(学习笔记一) 一. VS 2017 新建一个项目 选择ASP.NET Core Web应用程序,再选择Web API,选择ASP.NET Core 2. ...

  7. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  8. ref:学习笔记 UpdateXml() MYSQL显错注入

    ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...

  9. Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)

    自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...

随机推荐

  1. Images.xcassets

    Images.xcassets 概述 功能 方便用户管理图像资源. 图片获取方式 Images.xcassets中的图片资源只能通过imageNamed:方法加载,通过NSBundle的pathFor ...

  2. yii2超好用的日期组件和时间组件

    作者:白狼 出处:http://www.manks.top/yii2_datetimepicker.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ...

  3. Java集合框架的接口和类层次关系结构图

    Collection和Collections的区别 首先要说的是,"Collection" 和 "Collections"是两个不同的概念: 如下图所示,&qu ...

  4. 在unix系统下的 .o文件 .a文件 .so文件说明和相互关系

    .o文件 .o文件就是对象文件,包含编译好的可执行代码,当程序执行时,被链接库链接调用[相当于windows里的obj文件] .a文件unix中的静态链接库,包含多个需要包含的.o文件,主要特点是在 ...

  5. T-SQL—理解CTEs

    在推出SQLServer2005之后,微软定义了一个新的查询架构叫做公共表表达式--CTE.CTE是一个基于简单查询的临时结果集,在一个简单的插入.更新.删除或者select语句的执行范围内使用.再本 ...

  6. Mysql常用的一些技巧命令

    1.统计指定数据库下表的数量 mysql > use information_schema; mysql > SELECT count(TABLE_NAME) FROM informati ...

  7. jQuery学习笔记(一):入门

      jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操 ...

  8. jmeter的压力测试

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试. 以下为压力测试的简单介绍 1.在测试计划下增加一个线程组 2.线程组的内容需要进行编辑,根据压力测 ...

  9. Sublime3安装过程及常用插件安装及常用快捷键

    1  先去http://www.sublimetext.com/官网下载软件,然后网上找一个验证码,注册完成. 2  安装Package Control ,Package Control 插件是一个方 ...

  10. 嵌入式Linux驱动学习之路(八)创建最小的根文件系统

    busybox 在配置busybox,在是否选择要静态链接库时,在静态下,busybox中的工具不需要动态链接库,能够直接运行.而用户自己编写的程序如果需要动态链接库,还是依然需要有. 如果是动态链接 ...