第二篇 搭建第一个spring程序

使用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>
相关推荐
2201_7578308715 分钟前
线程池超详细解释
java
原神启动116 分钟前
云计算大数据——MySQL数据库二(数据库管理)
大数据·数据库·mysql
VX:Fegn089517 分钟前
计算机毕业设计|基于springboot + vue手办商城系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
麦麦鸡腿堡18 分钟前
Java_网络上传文件与netstat指令
java·服务器·网络
爱吃烤鸡翅的酸菜鱼20 分钟前
【RabbitMQ】发布订阅架构深度实践:构建高可用异步消息处理系统
java·spring boot·分布式·后端·websocket·架构·rabbitmq
组合缺一22 分钟前
Solon AI 开发学习10 - chat - 工具调用概念介绍
java·人工智能·学习·ai·llm·solon
LucidX22 分钟前
MySQL 数据库管理
数据库·mysql·oracle
我科绝伦(Huanhuan Zhou)24 分钟前
深入解析Oracle 10046事件与数据库初始化引导机制
数据库·oracle
曼巴UE525 分钟前
UE5 C++ TSet 创建初始和迭代
java·c++·ue5