Spring入门,看这篇就够了

Spring入门,看这篇就够了



一、 初识Spring

Spring技术是JavaEE开发的必备技能,企业开发技术选型命中率大于90%。从专业的角度讲,Spring降低了企业级开发的复杂性(简化开发),高效整合其他技术,提高企业级应用开发与运行效率(框架整合)。Spring提供了两个打的核心技术IoC和AOP技术,基于AOP技术之上,又提出了事务处理等核心技术。
Spring发展到今天已经形成了一种开发的生态圈,spring提供了若干个项目,每个项目用于完成特定的功能,我们称之为spring全家桶。
图片来源 黑马程序员课程截图
Spring framework是spring生态圈中最基础的项目,是其他思想的根基,我们通常把Spring framework称之为spring。一下我们将对spring展开学习。


二、Spring Framework系统架构

图片来源 黑马程序员课程截图通过系统架构可以看出,我们要学习Spring技术,第一个要学习的内容就是Core Container(核心容器),因为他是用于封装对象的,而所有的一切都是基于对象展开学习的。

三、核心概念

1.IoC(inversion of control)控制反转

对于初学者学习Spring之前,写代码的通常是以new的方式产生对象,这样当业务功能发生改变时,源码也需要发生改变,模块的耦合性很高。为了解决这个问题,提出了对象的创建控制权由程序转移到外部,这种思想就被称为控制反转。简单来说,使用对象时,由主动new产生对象转换成为由外部提供对象,此过程中对象的创建控制权由程序转移到外部,其思想称为控制反转。
Spring技术对IOC思想进行了实现:Spring提供了一个容器,称为IOC容器,用于充当IOC思想中的“外部”。

2.Bean

IOC容器负责对象的创建、初始化等一系列工作,被创建或者被管理的对象在IOC容器中称为Bean。

3.DI(dependency injection)依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入。
介绍完这些基础概念,当然少不了编程实践啦,各位主公是不是已经等不及要上手试试效果了,那就让我们用下面的入门案例,来感受一下Spring的魅力吧!

四、IoC入门案例(以Maven项目为例)

1.前期准备

对象是基础,Spring的核心也是对对象的管理,所以首先需要创建Bean的接口和具体的实现类。以Maven项目为例,创建过程相信各位主公已经轻车熟路啦,这里就不做过多赘述了。首先根据我们前期所学的知识,分别创建Dao层的Service层接口和实现类:

Dao层接口代码如下:

package com.itxiaobai.spring;
public interface BookDao {
    void save();
}

这里我们只需要简单的打印一句话,用于查看效果就好啦。

Dao层代码实现如下:

package com.itxiaobai.spring;
public class BookDaoImpl implements BookDao {
    @Override
    public void save() {
        System.out.println("book dao save......");
    } 
}

Service层接口如下:

package com.itxiaobai.spring;
public interface BookService {
    void save();
}

Service层实现类如下:

package com.itxiaobai.spring;
public class BookServiceImpl implements BookService{
    BookDao bookDao ;
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
    @Override
    public void save() {
        System.out.println("book service save......");
        bookDao.save();
    }
}

2.导入坐标

使用Maven工具管理项目,我们需要导入Spring对应的Maven坐标。

Spring坐标导入:

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

3.编写配置文件

Bean对象创建完成,Spring坐标也导入完成以后,如何将被管理的对象告知IoC容器呢?我们需要使用配置文件的方式。在resources文件夹下创建applicationContext.xml文件。在该文件中完成对应bean的配置,其中配置代码如下:

配置bean:

  <bean id = "BookDao" class = "com.itxiaobai.spring.BookDaoImpl" />
  <bean id = "BookService" class = "com.itxiaobai.spring.BookServiceImpl" />

配置DI:

  <bean id = "BookDao" class = "com.itxiaobai.spring.BookDaoImpl" />
  <bean id = "BookService" class = "com.itxiaobai.spring.BookServiceImpl">
  	<property name="bookDao" ref="BookDao"/><!--手动注入-->
  	<!--Property标签标示配置当前bean的属性,
  	name属性标示配置哪一个具体的属性,
  	ref标签标示参照哪一个bean -->
  <bean/>

其中,id表示可以随便起,但是尽量符合java编写规范,class的值为对应实现类的包全名。

4.测试类编写

完成以上内容以后,Spring的准备工作基本上就完成了,这个时候就可以编写测试类查看成果了。

测试类代码展示:

package com.itxiaobai.spring;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        //传统方法,高内聚
//        BookService bookService = new BookServiceImpl();
//        bookService.save();
        //获取IOC容器
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        ctx.registerShutdownHook();//关闭虚拟机前关闭所有容器
       /* BookDao bookDao = (BookDao) ctx.getBean("BookDao");
        bookDao.save();*/
//       ctx.close();//暴力关闭
		//获取bean,这里的BookService就是我们前面在配置文件中Id处起的名字;
        BookService bookService =(BookService) ctx.getBean("BookService");
        bookService.save();


    }
}

以上,一个简单的Spring入门案例就完成啦,一起看一下测试结果吧!
效果截图


五、总结

Spring 的灵活库受到全世界开发人员的信赖。 Spring 灵活而全面的扩展集和第三方库让开发人员可以构建几乎任何可以想象的应用程序。 在其核心,Spring Framework 的 控制反转 (IoC) 和 依赖注入 (DI) 特性为广泛的特性和功能集提供了基础。 无论您是为 Web 构建安全、反应式、基于云的微服务,还是为企业构建复杂的流数据流,Spring 都有可以提供帮助的工具。 如果这篇文章给您提供了帮助,或者提起了您对Spring学习的欲望,就点个关注吧,我将继续更新相关内容,如有问题,还请各位主公批评指正。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要的是葫芦!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值