Spring的创建和使用

0.环境问题

0.1安装Spring Boot Helper

Idea社区版安装Spring Boot Helper,才能创建创建Spring Boot项目(Spring项目不需要,我们可以提前安装),如果是旗舰版不需要安装这个插件。

 注意这个插件在IDEA2021.3版本以后转为收费插件,我们使用2021.3的版本即可

0.2配置maven国内源

为什么要配置maven国内源呢?如果不配置可能导致创建Spring/Spring Boot失败,或者是在maven项目中引入jar失败,从而导致项目运行不起来。

第一步】在设置中(总共有两个设置),如下图所示,我们在以下两个设置中,进行相应的更改。(两个设置中的内容一样,但要设置两次,我们只将一个)

Spring的创建和使用_第1张图片

 【第二步】打开Maven项目设置,然后勾选两个对号,去掉一个对号(这个对号,有的人可能没有不用管)

Spring的创建和使用_第2张图片

 【第三步】在setting.xml中配置国内源

Spring的创建和使用_第3张图片

Spring的创建和使用_第4张图片

 如果没有这个文件,我们直接下载(settings.xml · 风夏/JavaEE进阶 - 码云 - 开源中国 (gitee.com) ),放入当前文件夹即可

如果有这个文件,我们不能直接下载或覆盖此文件,而是打开文件,在相应位置添加词语句

     alimaven

     aliyun maven

     http://maven.aliyun.com/nexus/content/groups/public/

     central

Spring的创建和使用_第5张图片

第四步】删除本地所有jar包,重新下载。

Spring的创建和使用_第6张图片

Spring的创建和使用_第7张图片

 如果下载失败,我们重新检查以上步骤,如果还是下载失败,我们切换网络(可能这个节点连接不上),重新下载,或等4个小时再次下载。

注意】注意路径中不能有中文

1.创建一个Spring项目

1.1添加Spring框架支持

首先创建一个Maven项目,然后一路下一步。在项目的pom.xml中添加Spring框架的支持,内容如下:


    
        org.springframework
        spring-context
        5.2.3.RELEASE
    

    
        org.springframework
        spring-beans
        5.2.3.RELEASE
    

从上述的配置中可以看说,添加的框架有spring-context:spring上下文,还有spring-beans:管理对象的模块。

1.2添加启动类

我们在创建好的项目Java文件夹下创建一个启动类App,包含main方法即可。

public class App {
    public static void main(String[] args) {
        
    }
}

2.储存Bean对象

储存Bean分为两步:

  • 创建一个Bean对象
  • 将创建的Bean注册到Spring容器中。

2.1创建Bean

所谓的Bean就是Java语言中的一个普通的对象,实现代码如下:

public class User {
    public String sayHi(String name) {
        return name + "hello!";
    }
}

2.2将Bean注册到容器

在创建好的项目中添加Spring配置文件spring-config.xml,将此文件放到resources的根目录下面。

Spring的创建和使用_第8张图片

 Spring的配置文件的固定格式为以下内容(无需记忆,粘贴即可)




接下来,将User对象注册到Spring中即可,具体操作是在中添加配置。

    

这就像我们创建一个公司,不能只有自己知道,我们在政府注册后,就可以享受相应的优惠了。

3.获取并使用Bean对象

获取并使用Bean对象分为三步:

  1. 得到Spring上下文对象,因为对象都交给Spring管理了,所以获取对象要从Spring中获取,那么就要先获取Spring的上下文。
  2. 通过Spring上下文,获取某一个指定的Bean对象。
  3. 使用Bean对象。

3.1获取Spring上下文

public class App {
    public static void main(String[] args) {
        //1. 获取上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 获取上下文对象的另一种方法
        BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    }
}

这是两种获取上下文对象的不同方式,但是我们现在只使用第一种。

ApplicationContext 与 BeanFactory 有什么区别?(常见的面试题)

  • ApplicationContext继承了BeanFactory,它具有父类所有的功能,还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。
  • 从性能来讲:ApplicationContext是在运行的使用全部加载好所有的Bean对象,在使用的时候,直接去取即可,除了加载慢一点,运行起来非常的快;BeanFactory是在使用某个Bean的是由才创建这个对象,这导致了运行起来非常的慢。这就相当于在没有使用工具之前,一个把工具包买好了,一个是在使用某个工具的时候再去单独买。

【更多了解】BeanFactory主要是在以前使用,以前内存很贵,当时的计量单位可能是M或者是KB,这就导致了开发者不得不减少内存的使用,那个时候使用BeanFactory是很正常的。但是随着技术的进步,内存越来越不值钱,人们要求软件的效率越来越高,这就导致我们必须一次全部加载完所有的Bean,以达到随用随取的目的。

3.2获取指定的Bean对象

public class App {
    public static void main(String[] args) {
        //1. 获取上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        // 获取上下文对象的另一种方法
        BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        User user1 = (User)context.getBean("user");
        User user2 = (User)beanFactory.getBean("user");
        user1.sayHi("user1");
        user2.sayHi("user2");
    }
}

3.2.1注意事项

Spring的创建和使用_第9张图片

 Bean的Id要一一对应

3.2.2getBean方法的更多用法

getBean()方法有很多种重载的方法,我们可以使用重载的方法来获取对象

//其他获取对象的方法
        user1 = context.getBean("user", User.class);
        user1 = context.getBean(User.class);

建议使用Id+类名的方式来获取对象。从类名获取对象的方式如果只有一个符合这个类名的Bean还可以使用,如果有两个都是用相同的类名,会导致错误(后面我们会可能从方法的返回值获取对象,可能导致放回的类型都是User,从类名获取对象就可能导致错误)

4.总结

Spring的创建和使用_第10张图片

 

你可能感兴趣的:(spring,java)