创建一个Spring项目

最近一直忙比赛和小论文的事儿,Java学习耽搁了一小段时间,好久没写博客了…开始快乐的学习Java-Spring框架!!! 😐

1.创建空工程—Empty Project
2.在IDEA中创建project和module(Maven类型)后检查Settings------养成好习惯
编码集:

spring java类红色 idea idea写spring_spring

Project-jdk和语言级别:

spring java类红色 idea idea写spring_java_02

module语言级别:

spring java类红色 idea idea写spring_配置文件_03

整理 pom.xml

spring java类红色 idea idea写spring_java_04

spring java类红色 idea idea写spring_spring java类红色 idea_05

项目结构如下:

添加resources文件并标记

标记—选中文件夹右键-Mark Directory as

spring java类红色 idea idea写spring_spring java类红色 idea_06

第一个Spring项目实现步骤

readme.txt

ch01-first:第一个spring项目。
使用spring:spring作为容器管理对象, 开发人员从spring中获取要使用的对象。

实现步骤:(3.4主要)
  1. 新建maven项目
  2. 加入依赖, 修改pom.xml
    spring-context :spring依赖
    junit: 单元测试
  3. 开发人员定义类:接口和实现类
    类也可以没有接口。
    Spring位于三层架构中的业务层.先写接口再写实现类
    接口和实现类定义:和没有spring一样。
  4. 创建spring的配置文件。 作用:声明对象。
    把对象交给spring创建和管理。
    使用<bean>表示对象声明,一个bean表示一个java对象。
  5. 使用容器中的对象。
    创建一个表示spring容器的对象 ApplicationContext 从容器中,根据名称获取对象,使用getBean("对象名称")

1.添加依赖

spring java类红色 idea idea写spring_spring java类红色 idea_07

Spring中jar包下载

根据博客👉👉👉Spring jar包官方下载地址及方法 前面步骤一样,从第四步开始,界面变了,操作不太一样了
以下是王六六同学寻找的步骤~~~~~

👇👇👇

下图链接

spring java类红色 idea idea写spring_xml_08


spring java类红色 idea idea写spring_java_09


下图链接

spring java类红色 idea idea写spring_java_10


点击你所需要的jar包版本👇

spring java类红色 idea idea写spring_spring_11


根据自己需要的版本下载即可,也可以在pom文件<version>中输入Spring-jar包版本号,可自动下载到本地仓库中.(切记,版本号要写对,带不带RELEASE 😐)

spring java类红色 idea idea写spring_java_12


spring java类红色 idea idea写spring_xml_13


jar包加载成功------

spring java类红色 idea idea写spring_xml_14

上图中Spring核心jar包对应Spring体系结构中的核心容器👇:

spring java类红色 idea idea写spring_spring java类红色 idea_15


2.接口和实现类定义

2.1 先定义一个接口类—SomeService

鼠标放在SomeService上Alt+Enter,快捷键创建接口实现类—SomeServiceImpl

spring java类红色 idea idea写spring_xml_16


spring java类红色 idea idea写spring_xml_17


一路ok👇

spring java类红色 idea idea写spring_spring java类红色 idea_18

原来执行接口方法需要程序员创建一个main方法:

spring java类红色 idea idea写spring_spring java类红色 idea_19


spring java类红色 idea idea写spring_配置文件_20

2.2 现在交给Spring来做--------->Spring配置文件(resources目录下)

选中resources文件Alt+Insert输入x寻找xml文件

spring java类红色 idea idea写spring_spring_21

2.3 Spring的配置文件

beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

spring标准的配置文件:

  • 根标签是 beansA
  • beans 后面的是约束文件说明
  • beans里面是bean声明。
  • 什么是bean: bean就是java对象, spring容器管理的java对象,叫做bean

spring java类红色 idea idea写spring_配置文件_22


spring java类红色 idea idea写spring_spring java类红色 idea_23


在配置文件中声明对象:

spring java类红色 idea idea写spring_配置文件_24

2.4 使用Spring所管理的对象:

在main方法中:

  1. 指定Spring配置文件:从类路径(classpath----resources)之下开始的路径
String config="beans.xml";

spring java类红色 idea idea写spring_spring_25


2. 创建容器对象, ApplicationContext 表示spring容器对象。 通过ctx获取某个java对象

ApplicationContext ctx = new ClassPathXmlApplicationContext(config);

spring java类红色 idea idea写spring_spring_26


spring java类红色 idea idea写spring_spring java类红色 idea_27


👇

spring java类红色 idea idea写spring_spring_28

  1. 从容器中获取指定名称的对象, 使用getBean(“id”)

    👇

    SomeService接口类型的对象👇
SomeService service = (SomeService) ctx.getBean("someService");
  1. 调用对象的方法,接口中的方法
service.doSome();
总体如下:

spring java类红色 idea idea写spring_spring_29

执行结果👇

spring java类红色 idea idea写spring_xml_30

spring容器创建对象的特点

1.Spring容器创建对象,调用的是类的哪个方法?

答: 默认是调用类的无参数构造方法

spring java类红色 idea idea写spring_xml_31


spring java类红色 idea idea写spring_spring_32


若加一个参数:

spring java类红色 idea idea写spring_xml_33


报错:

spring java类红色 idea idea写spring_配置文件_34

2.Spring是什么时候调用对象?

spring java类红色 idea idea写spring_spring_35

创建spring容器对象的时候,会读取配置文件,创建文件中声明的java对象。

3.spring容器创建对象, 一次创建几个 ?

在创建容器(ApplicationContext)对象时,会把配置文件中的所有对象创建出来(spring的默认规则)

综上:

  1. 容器对象ApplicationContext:接口
    通过ApplicationContext对象,获取要使用的 其他java对象, 执行getBean(“<bean>的id”)
  2. spring默认是调用类的无参数构造方法,创建对象
  3. spring读取配置文件, 一次创建好所有的java对象, 都放到map中。