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. C#复习⑨(附带C#参考答案仅限参考)

    C#复习⑨ 2016年6月22日 14:28 C#考试题&参考答案:http://pan.baidu.com/s/1sld4K13 Main XML Comments & Pointe ...

  2. WPF学习之路(十四)样式和模板

    样式 实例: <Window.Resources> <Style x:Key="BtnStyle"> <Setter Property=" ...

  3. Helpful Tool

    Remote Connectivity Analyzer(Online) https://testconnectivity.microsoft.com/ https://technet.microso ...

  4. github代码上传之命令提交

    Git GUI的用法比较简单,随便弄弄就可以将本地git库中的代码提交到远端github服务器,所以想把Git bash这玩意儿的操作流程快速过一遍,主要是做个笔记,以后忘记了可以看看怎么操作的. 首 ...

  5. 虚拟机中MySQL连接问题:Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql

    环境:在VirtualBox中安装了Ubuntu虚拟机,网络使用了NAT模式,开启了端口转发. 局域网内其他计算机访问虚拟机中的MySQL Server出现两个问题: Lost connection ...

  6. 一些性能查询的SQL 备忘

    --检查数据库的等待事件 from v$session_waitwhere event not like 'SQL%' and event not like 'rdbms%' --找出系统中耗时的操作 ...

  7. Linux下Nagios的安装与配置[转]

    一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...

  8. mysql-3 检索数据(1)

    SELECT 语句 SELECT检索表数据,必须至少给出两条信息--------想选择什么,以及从什么地方选择. 检索一个列 SELECT prod_name FROM products; 上述语句利 ...

  9. Linux文件和目录

    access() //检查是否调用进程有Access这个文件的权限,如果文件是一个符号链接,会将它解引用,成功返回0,失败返回-1设errno #include <unistd.h> in ...

  10. Linux磁盘管理之逻辑结构主引导扇区02

    一.主引导扇区 主引导扇区位于硬盘的0磁道0柱面1扇区,共占用了63个扇区,但实际上只使用了512字节,由三大部分组成: 1.主引导记录MBR(Master Boot Record):占446字节. ...