使用xml配置的方式构建第一个Spring入门项目
1.导入依赖
XML
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--有些idea在加载依赖的时候会将环境切换成1.6的,所以这里需要指定环境-->
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<!-- 定义依赖的版本号 -->
<spring.version>6.0.6</spring.version>
</properties>
<dependencies>
<!-- junit测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- spring相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<!-- 导入dom4j相关依赖-->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
2.创建实体类,实体类使用了lombok,在构建实体类中减少代码量但是可读性较差
java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Panda {
private Integer pid;
private String pname;
}
@Data
@NoArgsConstructor
public class Student {
private Integer sid;
private String sname;
private Integer age;
private Date birthday;
private Panda panda;
private List address;
private String[] likes;
private Map maps;
public Student(Integer sid, String sname) {
this.sid = sid;
this.sname = sname;
}
public Student(Integer sid, String sname, Integer age) {
this.sid = sid;
this.sname = sname;
this.age = age;
}
public Student(Integer sid, String sname, Integer age, Date birthday, Panda panda, List address, String[] likes, Map maps) {
this.sid = sid;
this.sname = sname;
this.age = age;
this.birthday = birthday;
this.panda = panda;
this.address = address;
this.likes = likes;
this.maps = maps;
}
}
3.创建spring核心配置文件,Spring的核心配置文件名是可以自定义的,在加载引用的时候注意变换即可,演示使用的是applicationContext.xml
java
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd" >
<!--
创建Student类对象
1.基于xml配置文件 无参构造方法创建
bean: 创建类对象的标签
id:表示唯一标识符,在配置文件中不能重复
name: 给对象取别名,并且可有多个别名
class:实际类全路径
-->
<!-- 默认使用空参构造方法 -->
<bean id="stu" class="com.wn.entity.Student"></bean>
<!-- 使用有参构造创建对象-->
<bean id="stu1" class="com.wn.entity.Student">
<constructor-arg name="sid" value="18"></constructor-arg>
<constructor-arg name="sname" value="tom"></constructor-arg>
</bean>
</beans>
4.搭建测试类
java
public class TestBean {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Student stu = (Student) context.getBean("stu2");//这里括号中的使用的是bean中的id
System.out.println(stu);
}
}
基于构造方法实现IOC
在Spring的核心配置文件中添加一下代码
XML
<!-- 构造器注入-->
<!--
4.依赖注入 - 构造注入
4.1、通过参数名称注入
4.2、通过参数类型注入
4.3、通过参数顺序注入
-->
<bean id="stu" class="com.wn.entity.Student">
参数名称
<constructor-arg name="sid" value="1001"/>
<constructor-arg name="sname" value="张三"/>
参数类型
<constructor-arg type="java.lang.Integer" value="1002"/>
<constructor-arg type="java.lang.String" value="nino"/>
参数顺序
<constructor-arg index="1" value="niko"/>
<constructor-arg index="0" value="1111"/>
</bean>
<!-- 复杂类型注入-->
<bean id="pada" class="com.wn.entity.Panda">
<constructor-arg name="pid" value="123"/>
<constructor-arg name="pname" value="画画"/>
</bean>
<bean id="stu" class="com.wn.entity.Student">
<constructor-arg name="sid" value="10012"/>
<constructor-arg name="sname" value="10012"/>
<constructor-arg name="age" value="10012"/>
<constructor-arg name="birthday" value="2025/12/21 12:21:30"/>
<constructor-arg name="panda" ref="pada"/>
<constructor-arg name="address">
<list>
<value>成都</value>
<value>桑海</value>
<value>北京</value>
</list>
</constructor-arg>
<constructor-arg name="likes">
<array>
<value>吃饭</value>
<value>睡觉</value>
<value>写代码</value>
</array>
</constructor-arg>
<constructor-arg name="maps">
<map>
<entry key="1" value="ok"/>
<entry key="12" value="ok0"/>
<entry key="123" value="o0k"/>
</map>
</constructor-arg>
</bean>