IDEA社区版搭建Spring工程(01-基础框架搭建)

创建Spring项目

  1. IDEA打开New Project-Maven Archetype,选择Archetype:org.apache.maven.archetypes:maven-archetype-quickstart

  1. IDEA更换国内源,Maven可以配置aliyun镜像(这里略)

  2. 添加 Spring 依赖

这里选择当前spring-4的最新版本,也可以选择其它版本(https://mvnrepository.com/artifact/org.springframework/spring-core)

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.30.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.30.RELEASE</version>
    </dependency>

运行第一个 Spring 项目

  1. 这个模板里已经包含了main方法启动类,还需要新建resources文件夹

  1. 新建一个测试学生类
package org.example;

public class Student {

    public Student(){
        System.out.println("no-args");
    }
    public Student(String arg){
        System.out.println(arg);
    }
    public void print(String str) {
        System.out.println(str);
    }
}
  1. 将Bean注册到Spring项目上下文

需要在resources中新建一个XML文件并写入如下代码,文件名可以设为spring-config.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"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           https://www.springframework.org/schema/context/spring-context.xsd">
</beans>

在XML文件中加入bean注册信息:<bean id="student" class="org.example.Student"/>

  1. 将 Bean 对象从 Spring 上下文中取出来使用,执行run命令。
public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        // 获取 Spring 的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 获取 Bean 对象
        Student student = context.getBean("student", Student.class);
        // 使用 Bean 对象
        student.print("hello world");
    }

查看执行结果

思考

  1. Bean类是否有更方便的注册发现方式?

可以采用扫描配置:<content:component-scan base-package="org.example"/>

  1. 为什么通过spring容器管理bean比较好?

解耦。通过spring容器管理和初始化bean,方便统一使用,避免一点改动多处修改的麻烦。

  1. 通过ApplicationContext和BeanFactory获取 Spring 上下文对象有什么区别和相同点?
// 1. 得到 spring 上下文对象
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

// 2. 根据上下文对象提供的方法获取到 bean
User user = (User) beanFactory.getBean("user");

相同点:都有getBean方法,从容器中获取bean对象。
不同点:

  • ApplicationContext 属于 BeanFactory 的子类,BeanFactory 只提供了基础访问Bean的方法,而 ApplicationContext 除了拥有 BeanFactory 的所有功能之外,还拥有一些独立的特性,比如对国际化的支持、资源访问的支持、以及事件和传播等方面的支持。
  • 从性能方面来说二者是不同的,BeanFactory是按需加载,它很像单例模式中的懒懒汉模式,当我们需要用到了某个bean对象,它才会临时加载。
    然而,ApplicationContext是饿汉模式,在我们创建此类的时候,它会一次性地将所有的 bean 对象都加载起来,以备后续使用。
posted @ 2024-07-09 11:27  Andy_lu020  阅读(97)  评论(0编辑  收藏  举报