第二篇 搭建第一个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>
相关推荐
崎岖Qiu几秒前
【设计模式笔记18】:并发安全与双重检查锁定的单例模式
java·笔记·单例模式·设计模式
曲莫终几秒前
spring.main.lazy-initialization配置的实现机制
java·后端·spring
CodersCoder3 分钟前
SpringAI-Tool简单实践
spring·spring-ai
九河云6 分钟前
华为云 DRS 数据复制服务:数据库无缝迁移上云的零停机实践
大数据·数据库·华为云
姓蔡小朋友9 分钟前
MySQL多表查询
数据库·mysql
❀͜͡傀儡师9 分钟前
docker部署Docker Compose文件Web管理工具Dockman
java·前端·docker·dockman
沐雪架构师11 分钟前
大模型Agent面试精选题(第五辑)-Agent提示词工程
java·面试·职场和发展
云飞云共享云桌面14 分钟前
SolidWorks服务器怎么实现研发软件多人共享、数据安全管理
java·linux·运维·服务器·数据库·自动化
是喵斯特ya16 分钟前
JNDI注入漏洞分析
java·安全
kong@react18 分钟前
wsl2安装及命令(详细教程)
java·docker·容器