Spring的一个入门例子
时间:2019-03-18
本文章向大家介绍Spring的一个入门例子,主要包括Spring的一个入门例子使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
例子参考于:Spring系列教材 以及《轻量级JavaEE企业应用实战》
Axe.class
package com.how2java.bean;
public class Axe {
public String chop() {
return "使用斧头砍柴";
}
}
Person.class
package com.how2java.bean;
public class Person {
private Axe axe;
public void setAxe(Axe axe) {
this.axe = axe;
}
public void useAxe() {
System.out.println("我打算去砍点柴!");
System.out.println(axe.chop());
}
}
BeanTest.class
package com.how2java.bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BeanTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建Spring容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"beans.xml"});
/*
* Spring 容器获取Bean对象主要有如下两个方法
* 1).Object getBean(String id):根据容器中Bean的id来获取指定Bean,获取Bean之后要进行强制类型转换
* 2).T getBean(String name,Class<T> requiredType): 根据容器中的Bean的id来获取指定Bean,但该方法
* 带一个泛型参数,因此获取Bean后无须进行强制类型转换。
*/
//使用方法2).来获取id为person的Bean
Person p = ctx.getBean("person",Person.class);
//使用方法1).来获取id为person的Bean
//Person p = (Person) ctx.getBean("person");
p.useAxe();
}
}
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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 配置名为person的Bean,其实现类为com.how2java.Person -->
<!-- 下面配置的property元素name为axe,该元素将驱动Spring以反射方式执行person Bean中的setAxe()方法,ref的属性值为
axe,该属性值指定以容器中名为axe的Bean作为执行setter方法的传入参数 也就是在底层,会执行一些方法,最终将name="axe"这个属性反射成setAxe()这个方法,然后因为下面的bean指定了一个名为axe的
Bean,因此通过ref="axe"来指定setter方法的参数为名为axe的Bean -->
<bean id="person" class="com.how2java.bean.Person">
<!-- 控制调用setAxe()方法,将容器中的axe Bean作为传入参数 -->
<property name="axe" ref="axe" />
</bean>
<!-- 配置名为axe的Bean,其实现类为com.how2java.Axe -->
<bean id="axe" class="com.how2java.bean.Axe" />
</beans>
笔记:
<property>作为<bean>的子元素,它驱动Spring在底层以反射执行一次setter方法,其中<property...>的name属性决定执行哪个setter方法,而value或者是ref决定执行setter方法传入的参数
那么什么时候用ref什么时候用value?
当传入参数是基本类型及其包装类、string等类型,使用value
如果以容器中其他Bean作为传入参数则使用ref指定传入参数
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 尺取练习 -A - A - Stages (水题压压惊)
- 填坑-回溯-预习 之 二分-尺取大总结
- 深入浅出理解动态规划(一) | 交叠子问题
- 深入浅出理解动态规划(二) | 最优子结构
- 用x种方式求第n项斐波那契数,99%的人只会第一种
- 面试官:手撕十大排序算法,你会几种?
- 如何在Integer类型的ArrayList中同时添加String、Character、Boolean等类型的数据?
- Java开发岗面试题--基础篇(一)
- leetcode链表之找出倒数第k个节点
- MAC下安装nginx的正确姿势 实践笔记
- 关于 ThreadLocal 你需要知道的几点
- 关于Guava ForwardingMap
- http post Request header is too large 开发环境和线上版本解决方案
- 像java一样使用js contains 数组包含方法 实践笔记
- 服务治理之重试篇