创建一个maven项目
创建项目,这里我们选择quickstart就行了
修改pom.xml文件
将<build>
标签中的代码先删掉,因为我们还用不到这些,然后导入spring依赖
(这里有个小bug,我想用当前最新版的5.3.6的Spring,但是maven似乎没找到这个版本的jar包,之后*改为了5.2.5的)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
完整pom文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>ch01-hello-spring</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
</dependencies>
<build>
</build>
</project>
创建接口
定义一个简单的接口
public interface SomeService {
void doSome();
}
选中接口名,按alt+Enter
可以快速生成接口的实现类(IDEA的一个小技巧)
import com.service.SomeService;
public class SomeServiceImpl implements SomeService {
@Override
public void doSome() {
System.out.println("执行了SomeServiceImpl的doSome方法");
}
}
编写配置文件
在 resource 目录下创建 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">
<!--告诉spring创建对象
声明bean,就是告诉spring要创建某个类的对象
id:对象的自定义名称,唯一值。spring通过这个名称找到对象
class:类的全限定名称(不能是接口,因为spring是反射机制创建对象,必须使用类)
spring就完成 SomeService someService=new SomeServiceImpl();
spring是把创建好的对象放入到map中,spring框架有一个map存放对象的。
springMap.put(id的值,对象);
例如 springMap.put(“someService“,new SomeServiceImpl());
一个bean标签声明一个对象,
-->
<bean id="someService" class="com.service.impl.SomeServiceImpl"/>
<bean id="someService1" class="com.service.impl.SomeServiceImpl"/>
<!--
spring能创建一个非自定义类的对象吗,创建一个存在的某个类的对象
-->
<bean id="mydate" class="java.util.Date"/>
</beans>
<!--
spring配置文件
1.beans:是根标签,spring中把java对象称为bean。
2.spring-beans.xsd是约束文件,和mybatis中的那个 dtd是一样的
-->
测试方法
@Test
public void test01(){
SomeService someService=new SomeServiceImpl();
someService.doSome();
}
/**
* spring默认创建对象的时间:在创建spring容器时,会创建配置文件中的所有的对象
* spring创建对象:默认调用的是无参构造方法
*/
@Test
public void test02(){
//使用spring容器创建的对象
//1.指定spring配置文件的名称
String config="beans.xml";
//2.创建表示spring容器的对象,ApplicationContext
//ApplicationContext就是表示spring容器,通过容器对象就能获取对象了
//ClassPathXmlApplicationContext表示从类路径中去加载spring的配置文件的
ApplicationContext ac=new ClassPathXmlApplicationContext(config);
//从容器中获取某个对象,你要调用对象的方法
//getBean("配置文件中bean的id值")
SomeService service=(SomeService) ac.getBean("someService");
//使用spring创建好的对象
service.doSome();
}
运行成功!