2.2 Spring的第一个程序 实验步骤:
1.创建maven项目
Creat New Project -> Empty Project
添加Modules -> Maven -> 勾选Create from archetype ->选择maven-archetype-quickstart ->修改GroupId:org.example->创建main目录下创建目录 resourv ->右键 Mark Directory as ->选择Resources Root
2.加入maven的依赖//用到框架即要用到框架对应的jar包
spring的依赖,版本5.2.5版本
junit依赖//单元测试依赖,方便测试程序
pom.xml文件内 -> <dependencies></dependencies>内添加

<properties></properties>内jdk版本改为安装版本

或

3.创建类(接口和它的实现类)//和没有使用框架一样,即普通类
在目录下创建接口

Alt+Enter 调出解决方法然后生成接口的所有方法-> 选择Implement interface


用正转的方式定义测试类

4.创建spring需要使用的配置文件
声明类的信息,这些类由spring创建和管理
XML Configuartion File->Spirng Config
用反转的方式定义测试类
声明bean告诉spring要创建某个类的对象<bean id="" class="" />
spring把创建好的类放入到map中,spring框架有一个map存放对象的springMap.put(id的值,对象);
一个bean标签声明一个Java对象

5.测试(使用)spring创建的对象
CTRL+h看实现类

- 指定spring配置文件的名称
String config="beans.xml";
-
创建表示spring容器的对象,ApplicationContext
ApplicationContext:表示spring容器,通过容器获取对象了
ClassPathXmlApplicationContext:表示从类路径中加载spring的配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
-
从容器中获取某个对象,即调用对象的方法
getBean("配置文件中的bean的id值")
ac.getBean(s:"somService");
因为创建的是somServiceImp1类的对象

而somServiceImp1使用了接口,所它是接口SomeService类型的

getBean方法返回object(对象),需要把值转成需要的类型
SomeService service = (SomeService)ac.getBean(s:"somService");
- 使用spring创建好的对象
serveice.doSome();

执行流程:
在测试文件中创建对象ac用的类是ClassPathXmlApplicationContext ->
ClassPathXmlApplicationContext 读config(指向配置文件) ->
在配置文件中遇到bean标签,通过反射机制来调用com.bjpowernode.service.impl.SomeServiceImpl类的构造方法创建对象someService ->
把创建好的对象放到容器的map中 ->
从容器中拿到someService 名称的对象(从容器的map中获取) ->
讲拿到的对象赋值给service*
spring默认创建对象的时间:在创建spring容器时,会创建配置文件中的所有对象
*spring创建对象:默认调用的是无参数构造方法
通过spring提供的接口获取容器的对象信息
- 使用spring提供的方法,获取容器中定义的对象数量
getBeanDefinitionCount()方法
@Test
public void test03(){
String config="beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
int nums = ac.getBeanDefinitionCount();
System.out.println("容器中定义的对象的数量为:"+nums);
}
- 容器中每个定义的对象的名称
getBeanDefinitionNames()方法
//利用spring提供的方法,获取容器中定义的对象的名称
String names [] =ac.getBeanDefinitionNames();
for(String name:names){
System.out.println("容器中对象的名称:"+name);
}
- 获取一个非自定义的类对象
<bean id="mydate" class="java.util.Date" />
@Test
public void test04(){
String config="beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
Date my=(Date) ac.getBean("mydate");
System.out.println("当前系统时间:"+my);
}
总结:bean标签只要有类,就能创建对象
网友评论