推荐开发工具:Spring Tools,下载地址:https://spring.io/tools
开发IDE可选:经典的Ecplise(免费)、IDEA(收费)、VSCODE(免费)、MyEcplise(收费)
spring的第一个项目
建议大家使用maven管理所需的jar包,maven库推荐网站:https://www.mvnrepository.com/
打开ecplise,创建一个新的maven项目,编辑pom.xml,引入commons.logging.jar、spring-beans.jar、spring-context.jar、spring.core.jar、spring-expression.jar
<dependencies>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>6.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.1</version>
</dependency>
</dependencies>
2.在项目的顶层包下创建dao包,在dao包中创建接口TestDao和接口实现TestDaoImpl
public interface TestDao {
public void sayHello();
}
public class TestDaoImpl implements TestDao {
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("andasfjaksdflasdf");
}
}
3.在项目的顶层包中创建Starter类
public class Starter {
public static void main(String[] args) {
ApplicationContext context= new ClassPathXmlApplicationContext("application.xml");
TestDao dao= (TestDao)context.getBean("test");
dao.sayHello();
}
}
4.在项目的src/main/java文件夹下创建application.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="test" class="demo1.dao.TestDaoImpl"></bean>
</beans>
运行Starter类,将在控制台输出TestDaoImpl.sayHello打印的内容
代码解说:ClassPathXmlApplicationContext加载application.xml,通过bean标签的id创建类的实例,这里spring通过java的反射机制创建了TestDaoImpl的实例,利用接口对类的实例进行访问,实现了控制反转。控制反转指的是不是高层依赖低层,而是低层依赖高层,在程序代码中,父类、调用者属于高层,子类、被调用者属于低层,当类实现接口时,类的方法签名受制于接口方法定义,此时出现了控制反转