Spring 4.0.2 学习笔记(1) - 最基本的注入
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) - 最基本的注入的更多相关文章
- Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property> ...
- Spring实战第八章学习笔记————使用Spring Web Flow
Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应 ...
- Spring实战第一章学习笔记
Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...
- Spring Cloud微服务学习笔记
Spring Cloud微服务学习笔记 SOA->Dubbo 微服务架构->Spring Cloud提供了一个一站式的微服务解决方案 第一部分 微服务架构 1 互联网应用架构发展 那些迫使 ...
- #Spring实战第二章学习笔记————装配Bean
Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...
- 从零开始搭建.NET Core 2.0 API(学习笔记一)
从零开始搭建.NET Core 2.0 API(学习笔记一) 一. VS 2017 新建一个项目 选择ASP.NET Core Web应用程序,再选择Web API,选择ASP.NET Core 2. ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
- ref:学习笔记 UpdateXml() MYSQL显错注入
ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...
- Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)
自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...
随机推荐
- Ubuntu 14.04 软件源服务器列表
http://wiki.ubuntu.com.cn/Template:14.04source 服务器列表 可将 http://cn.archive.ubuntu.com/ubuntu/ 替换为下列任意 ...
- 如何利用Pre.im分发iOS测试包
大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安 ...
- 发现一个国内牛逼的maven仓库,速度真的太快了
前天网上下了一个项目,在公司还好,网络比较流畅,很快就把依赖下好了:回家的时候,想耍耍,结果下了一天也没把依赖下好,速度是几k每秒,甚至一k每秒,哎~心都碎了,网上一搜,结果发现了一个惊天的用nexu ...
- vmware克隆虚拟机eth0网卡无法启动
概述: 通过vmware克隆安装好的虚拟机之后,出现了网卡未启动的问题. vmware安装虚拟机请看:<vmware快速安装linux虚拟机>. 定位过程: 1.通过ifocnfig命令只 ...
- 查看ORACLE的实际执行计划
ORACLE的执行计划分为预估执行计划和实际执行计划.其中,你用Toad.PL/SQL Developer.SQL Developer.EXPLAIN PLAN FOR或者SET ATUOTRACE ...
- BootStrap入门教程 (一)
BootStrap入门教程 (一) 2011年,twitter的"一小撮"工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用.优雅.灵活.可扩展的前端 ...
- itext 实现pdf打印数字上标和下标
https://kathleen1974.wordpress.com/category/itext-pdf/ In one of my project, we need to give the use ...
- Java代码获取NTP服务器时间
apache的commons-net包下面有ntp相关的实现类,主要类有: 1 org.apache.commons.net.ntp.NTPUDPClient ? 1 org.apache.com ...
- MySQL基础学习(二) 常用SQL命令
一. 1. select version(); 查看数据库版本 2. select user(); 查看当前用户 3. select now(); 查看当前时间 4. show databases; ...
- [原]ubuntu14.04 网卡逻辑修改没有文件/etc/udev/rules.d/70-persistent-net.rules
-----问题出现------ 在新装的ubuntu14.04系统中没有发现文件/etc/udev/rule.d/70-persistent-net.rules, 无法修改网络的逻辑名称(即把第一张网 ...