Spring5 (1) - HelloWorld
2018-09-15 本文已影响21人
小白201808
本人使用的开发是工具是STS
一、我们以传统的方式去写一遍HelloWorld
打开sts,做的一次练习的准备工作
a.创建一个名为Spring5_base的java工程
b.在该工程的src目录下创建一个名为com.keen.hello的包
(1) 在该包下创建一个HelloWorld类
package com.keen.hello;
public class HelloWorld {
private String username;
private int age;
public void setAge(int age) {
this.age = age;
}
public void setUsername(String username) {
this.username = username;
}
public void sayHello() {
System.out.println("Welcome to the world of sping5,hello: "+username +" age :"+age);;
}
}
(2) 在该包下创建一个单元测试类HelloWorldTest
package com.keen.hello;
public class HelloWorldTest {
@Test//使用传统的方式写一遍
void testOld() throws Exception {
//创建一个对象
HelloWorld world = new HelloWorld();
//给当前对象设置相关属性
world.setUsername("keen");
world.setAge(12);
world.sayHello();
}
(3) output:
Welcome to the world of sping5,hello: keen age :24
二、我们使用spring写一遍
(1) 创建相同的一个HelloWorld类
package com.keen.hello;
public class HelloWorld {
private String username;
private int age;
public void setAge(int age) {
this.age = age;
}
public void setUsername(String username) {
this.username = username;
}
public void sayHello() {
System.out.println("Welcome to the world of sping5,hello: "+username +" age :"+age);;
}
}
(2) 此时我们要做一些准备工作
1.在该工程下创建一个lib文件,导入jar包(我使用的是Spring5)
我们需要引入连个jar包,spring-beans-5.0.0release.jar
Spring-core-5.0.0release.jar,并选中右键build path
2.在该工程下创建一个资源包命名为resource,并在该包下创建一个SpringBeanConfigurationFile,命名为applicaationContext.xml ,
接着点next(配置一下文件的schema约束),选第一个beans,然后在接下来的select desired xsd,选中第一个 .../schema/beans/spring-beans.xsd
接着出现就这个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">
</beans>
(2)接着我们在这个文件中配置bean
<?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">
<!-- 通过配置,告诉Spring的IOC容器,你需要帮我管理哪个类的对象 -->
<!--这里的id作为bean的名字,你可以写你喜欢的名字(规范就好),class是用来指定HelloWorld的路径,用于反射得到bean的实例-->
<bean id = "helloWorld" class="com.keen.hello.HelloWorld">
<!-- 操作属性 ,类似我们传统方法的set属性,注入信息-->
<property name = "username" value = "keen"/>
<property name = "age" value = "18"/>
</bean>
</beans>
(3)在测试类中启动并使用Spring容器
@Test
void testIoc() throws Exception {
HelloWorld world = null;
//-----------------------
//1.从classpath 路径寻找配置文件的路径,创建资源对象
Resource resource = new ClassPathResource("applicationContext.xml");
//2.根据资源对象,创建Spring IOC 容器对象
BeanFactory factory = new XmlBeanFactory(resource);
//3.从spring Ioc容器中获取指定的名称(helloworld)的对象
world = (HelloWorld) factory.getBean("helloWorld");
world.sayHello();
}
output:
Welcome to the world of sping5,hello: keen age :18
在这个简单的HelloWorld中使用Spring,我们似乎发现比传统的方法更加麻烦,但是听说(因为我也是刚接触),在以后大的开发项目中,优势就显示出来了。
其实applicaationContext.xml配置文件帮我们做了很多工作的。
如果没有配置文件,我们需要写以下或者更多的代码
//模拟SpringIOC容器的操作
@Test
void testIocMock() throws Exception {
String className = "com.keen.hello.HelloWorld";
HelloWorld world = null;
//----------------------
//使用反射创建对象
Class clzz = Class.forName(className);
Constructor con = clzz.getConstructor();
con.setAccessible(true);//设置构造器的可访问属性
Object obj = con.newInstance();
//使用内省机制设计属性值
BeanInfo beanInfo= Introspector.getBeanInfo(clzz);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pd:pds) {
//HelloWorld类中的所有的属性的名称
String propertyName = pd.getName();
if("username".equals(propertyName)) {
//调用username的setter方法
pd.getWriteMethod().invoke(obj, "lucy");
}else if ("age".equals(propertyName)) {
//调用age的setter方法
pd.getWriteMethod().invoke(obj, 18);
}
}
world = (HelloWorld)obj;
//----------------------
world.sayHello();
}
好了,今天的sprig-helloworld就学到这吧!