第二篇 搭建第一个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>
相关推荐
2501_9454235412 小时前
用Matplotlib绘制专业图表:从基础到高级
jvm·数据库·python
2301_7938046912 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
大阿明19 小时前
Spring Boot(快速上手)
java·spring boot·后端
哆啦A梦158819 小时前
Springboot整合MyBatis实现数据库操作
数据库·spring boot·mybatis
bearpping19 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一19 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
Zzzzmo_19 小时前
【MySQL】JDBC(含settings.xml文件配置/配置国内镜像以及pom.xml文件修改)
数据库·mysql
sunwenjian88619 小时前
Java进阶——IO 流
java·开发语言·python
sinat_2554878120 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
皮皮林55120 小时前
如何画出一张优秀的架构图?(老鸟必备)
java