1、准备环境
idea jdk1.8 maven3.5 Spring 4.3.12
首先这是一个maven项目,为了简单明了此处就不多说了
pom.xml文件引入spring坐标
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version> </dependency>
创建一个bean对象
package com.zhenghui.bean; public class Person { private String name; private Integer age; public Person() { } public Person(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
2、传统的加载Bean模式
在resources目录下创建一个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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="person" class="com.zhenghui.bean.Person"> <property name="name" value="zhenghui"/> <property name="age" value="18"/> </bean> </beans>
解释
<bean></bean>标签:
id:取的一个名字 class:需要加载的bean的实体类
<property/>标签:
name:实体类的变量名 value:需要赋值的数据
测试类
package com.zhenghui; import com.zhenghui.bean.Person; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainTest { public static void main(String[] args) { //配置的方式 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); Person person = (Person)applicationContext.getBean("person"); System.out.println(person.toString()); } }
测试结果
可以看出成功的打印出了我们想要的结果
Person{name='zhenghui', age=18}
评价使用xml加载bean的方式这种方式
太笨拙了。
3、使用注解加载bean
创建一个MainConfig.java文件
内容如下:
package com.zhenghui.config; import com.zhenghui.bean.Person; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; //配置类(java代码的方式)==以前的配置文件(xml文件的方式) @Configuration //告诉Spring这是一个配置类 public class MainConfig { //给容器中注册一个Bean;类型就是返回值的类型,id模式是使用的方法名作为id @Bean() public Person person(){ return new Person("里斯",20); } }
修改MainTest.java
package com.zhenghui; import com.zhenghui.bean.Person; import com.zhenghui.config.MainConfig; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainTest { public static void main(String[] args) { ApplicationContext acac = new AnnotationConfigApplicationContext(MainConfig.class); Person person = acac.getBean(Person.class); System.out.println(person.toString()); } }
运行结果
Person{name='里斯', age=20}
分析与评价
可见这种方式比加载配置文件的方式要好的多。