博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring入门(一):创建Spring项目
阅读量:6230 次
发布时间:2019-06-22

本文共 4806 字,大约阅读时间需要 16 分钟。

本篇博客作为Spring入门系列的第一篇博客,不会讲解什么是Spring以及Spring的发展史这些太理论的东西,主要讲解下如何使用IntelliJ IDEA创建第一个Spring项目以及通过一个示例讲解下Spring的简单原理。

1.创建Spring项目

IDE:IntelliJ IDEA

1.1新建项目

1.2选择项目类型

如果这里忘记了选择"Create empty spring-config.xml",也可以新建完项目再新建配置文件

1.3确定项目名称及保存路径

因为需要下载Spring依赖的包,因此需要加载一会

新建完的项目结构图如下:

2.Spring简单测试

新建一个Book类,定义两个字段bookName,author和一个实例方法printBookInfo()

public class Book {    private String bookName;    private String author;    public String getBookName() {        return bookName;    }    public void setBookName(String bookName) {        this.bookName = bookName;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public void printBookInfo() {        System.out.println("Book Name:" + this.bookName + ",Author:" + this.author);    }}复制代码

如果我们想要输出图书信息,按照传统的方式,需要以下几步:

  1. 创建Book类的实例对象
  2. 设置实例对象的bookName字段和author字段
  3. 调用实例对象的printBookInfo()方法
public class Main {    public static void main(String[] args) {        Book book = new Book();        book.setBookName("平凡的世界");        book.setAuthor("路遥");        book.printBookInfo();    }}复制代码

运行结果:

Book Name:平凡的世界,Author:路遥

那么在Spring项目中,如何实现同样的调用呢?

首先,修改spring-config.xml,添加如下配置:

复制代码

然后修改Main的方法为:

import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {    public static void main(String[] args) {        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");        Book book = applicationContext.getBean("book", Book.class);        book.printBookInfo();    }}复制代码

运行结果:

我们会发现,运行结果和传统方式一样,只是多了一些Spring的日志信息。

在以上代码中,我们并未使用new运算符来创建Book类的实例,但是却可以得到Book类的实例,这就是Spring的强大之处,所有类的实例的创建都不需要应用程序自己创建,而是交给Spring容器来创建及管理。

3.Spring简单讲解

虽说实例的创建交给Spring容器来创建及管理,但是在上述的代码中,什么时候创建了Book类的实例并对字段赋值了呢?

为验证这个疑问,我们修改下Book类

public class Book {    private String bookName;    private String author;    public Book(){        System.out.println(("This is Book constructor."));    }    public String getBookName() {        return bookName;    }    public void setBookName(String bookName) {        System.out.println("This is Book setBookName().");        this.bookName = bookName;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        System.out.println("This is Book setAuthor().");        this.author = author;    }    public void printBookInfo() {        System.out.println("Book Name:" + this.bookName + ",Author:" + this.author);    }}复制代码

添加一个Author类

public class Author {    private String name;    private int age;    public Author() {        System.out.println(("This is Author constructor."));    }    public String getName() {        return name;    }    public void setName(String name) {        System.out.println("This is Author setName().");        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        System.out.println("This is Author setAge().");        this.age = age;    }    public void printAuthorInfo() {        System.out.println("Name:" + this.name + ",Age:" + this.age);    }}复制代码

修改下spring-config.xml文件

复制代码

最后,我们修改下Main类的代码来Debug下,看下代码的执行顺序

import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {    public static void main(String[] args) {        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");        Book book = applicationContext.getBean("book", Book.class);        book.printBookInfo();        Author author = applicationContext.getBean("author", Author.class);        author.printAuthorInfo();    }}复制代码

为更直观的展示,请看如下的Gif图

从图中,我们可以看出,在执行完 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");后,控制台先输出了以下内容:

This is Book constructor. This is Book setBookName(). This is Book setAuthor(). This is Author constructor. This is Author setName(). This is Author setAge().

也就是这句代码执行完后,Book类和Author类的实例已经被创建并且字段已经被赋值,接下来的代码只是从Spring容器中获取实例而已。

4.注意事项

获取Bean时,第一个参数(bean name)要与spring-config.xml定义的bean id保持一致,比如我们在spring-config.xml中定义的是book,如果在获取时写的是Book,就会报错

import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {    public static void main(String[] args) {        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");        // 错误的beanName        Book book = applicationContext.getBean("Book", Book.class);        book.printBookInfo();    }}复制代码

报错信息如下:

5.参考链接

6.源码

源码地址:,欢迎下载。

转载于:https://juejin.im/post/5c80b0ade51d457cb608986b

你可能感兴趣的文章
HttpComponents 也就是以前的httpclient项目
查看>>
嵌入式设备web服务器比较
查看>>
纯代码利用CSS3 圆角边框和盒子阴影 制作 iphone 手机效果
查看>>
求点云的边界的方法小结
查看>>
System.map
查看>>
selenium使用等待的几种方式
查看>>
IE8 HACK介绍
查看>>
expect实现ssh自动登录
查看>>
Qt安装后配置环境变量(Mac)
查看>>
hierarchyviewer偶然不能使用的解决方法
查看>>
PL/SQL联系oracle成功可以sql解决的办法是检查表的名称无法显示
查看>>
C#创建和初始化类
查看>>
Swift - 将表格UITableView滚动条移动到底部
查看>>
为什么C++中空类和空结构体大小为1?(转载)
查看>>
jQuery判断checkbox是否选中的3种方法
查看>>
我在这里3在引发众1.8万的经验分享
查看>>
关于ajax的同步和异步
查看>>
【UWP】FlipView绑定ItemsSource,Selectedindex的问题
查看>>
MySQL----information-schema数据库相关权限的说明。
查看>>
转:Tortoise SVN 版本控制常用操作知识
查看>>