1.首先我们来创建一个HelloWorld类,通过Spring来对这个类进行实例化
1 package com.wzy.lesson1;
2
3 /**
4 * @author wzy
5 * @version 1.0
6 * @date 2019/5/5 23:46
7 */
8 public class HelloWorld {
9 private String name;
10
11 public void setName(String name) {
12 System.out.println("setName : " + name);
13 this.name = name;
14 }
15
16 public void hello() {
17 System.out.println("Hello " + name);
18 }
19
20 public HelloWorld() {
21 System.out.println("HelloWorlds Constructor...");
22 }
23 }
2.之后在项目的类路径下,我是在resources文件夹下创建
spring.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置Bean-->
<bean id="helloWorld" class="com.wzy.lesson1.HelloWorld">
<!--通过setName方法注入-->
<property name="name" value="Spring"/>
</bean>
</beans>
3.编写测试类创建HelloWorld类实例
1 private static void testHelloWorld2() {
2 //1.创建Spring的IOC容器对象
3 ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
4
5 //2.从IOC容器中获取Bean实例
6 // HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
7 //用类型获取,但是如果由多个接口的实现类,那么容器就不知道应该为我们返回哪个实例
8 HelloWorld helloWorld = ctx.getBean(HelloWorld.class);
9
10 //3.调用hello方法
11 helloWorld.hello();
12 }
这里使用Spring的IOC容器ApplicationContext的实现类ClassPathXmlApplicationContext对bean进行获取,这里获取bean的方式有两种:
第一种:通过bean的id进行获取
1 HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
第二种:通过bean的class进行获取
1 HelloWorld helloWorld = ctx.getBean(HelloWorld.class);
推荐使用第一种,因为在使用类名.class方式时,如果配置了两个HelloWorld类的bean那么,Spring容器将会抛出异常,因为容器无法确定你要获取的是哪一个bean,所以,如果要使用第二种的话,那么就要保证配置文件中只配置了一个HelloWorld类的bean,如果存在多个就会抛出一下异常:
测试结果:成功创建HelloWorld类的实例