Spring-01 入门

Spring定义(什么是Spring)

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

官网 Spring是一个企业级应用框架,它提供了JAVA企业级应用开发所需要的一切功能。并且可以根据应用程序的需求灵活地创建多种体系结构。

Spring是一站式的轻量级开源框架。以Ioc(Inverse of control)控制反转和Aop(Aspect Oriented Programming)面向切面编程为核心 。
Spring表示的是一个统称,它包含了Spring所有的"家族"成员,如Spring Framework,SpringBoot、SpringCloud、SpringBatch、SpringData、SpringIntegration等,但是本文的Spring指的就是Spring Framework。而其它的Spring框架都是以Spring Framework为基础建立的。

简单举例
 做饭和吃饭
 自己做饭的时候, 需要亲自动手, 买菜,洗菜,切菜,炒菜 ...步骤很是繁琐

 而我们也可以将做菜的权利委托给别人, 我们点外卖, 去餐馆吃饭都是如此

它的好处就是 缩短了我们辛苦做饭的时间

Spring起源:

Spring框架在2003年正式发布,作者是Rod Johnson ,Spring 响应了J2EE规范的复杂性,在早期的时候,Spring应用程序需要部署到应用程序服务器(如Tomcat)上才能运行。

但是Spring发展到现在,借助SpringBoot, 开发人员可以快速的创建一个应用程序 ,进行敏捷开发,并且借助SpringBoot内嵌的Servlet容器可以直接运行应用程序。

并且从Spring5开始,WebFlux应用程序甚至不使用Servlet API,也能在非Servlet容器的服务器(例如Netty)上运行。

Spring发展到现在,已经有许多的"家庭"成员了,如:Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch。有兴趣的童鞋可以在官网下载它们的Demo学习。

早期使用java开发企业应用(企业应用系统,比如:人力资源管理系统、OA办公自动化系统、财务系统 ,所有企业应用的系统总称为ERP)使用EJB(Enterprise java Bean)开发,是sun提供的规范,比如:把javabean分为:Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。 EJB特点依赖于应用服务器(比如:weblogic、websphere,类似 于tomcat),在开发EJb程序时过程比较繁琐。 Spring的出现是为了取代EJB的臃肿、低效、脱离现实缺点。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。

Spring 原理

在以往的学习中, 在测试类Test中 调用 A类的(成员)方法 ,
必须在Test 中 先创建 A类的对象, 使用对象调用方法
Test 是依赖于 A 

解除这种依赖关系 , 采用第三方中间人 Spring 
Spring  管理所有的 A 
Test  去找 Spring  获取 A的对象

什么是耦合?什么是内聚?(简单阐述)

耦合:就是程序之间的依赖关系; 耦合度越高 , 程序的独立性就会越差;

内聚:程序之间的功能实现关系;
程序的开发要做到:高内聚,低耦合;
实现:编译器不依赖,运行时才依赖;

  • 降低耦合的思路:
    通过反射创建对象,避免使用new;
    通过配置文件配置创建对象的全限定类名;

Spring好处

1.方便解耦,简化开发:
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

2.AOP编程的支持:
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

3.声明式事务的支持:
只需要通过配置就可以完成对事务的管理,而无需手动编程

4.方便程序的测试:
Spring对Junit4支持,可以通过注解方便的测试Spring程序

5.方便集成各种优秀框架:
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

6.降低JavaEE API的使用难度:
Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

Spring所包含的内容

请添加图片描述

Spring可以分为如下5个模块,分别如下:

核心模块(Core Container)
AOP模块(AOP、Aspect、Messaging)
数据访问和集成模块(jdbc、orm、transaction等)
WEB模块(Web MVC、 websocket、Servlet)
测试模块(Test)

使用IDEA 搭建Spring环境

Spring 环境包的下载

https://repo.spring.io/simple/libs-release-local/org/springframework/spring/4.3.6.RELEASE/
在这里插入图片描述

其他依赖包

Apache Commons Logging - Download Apache Commons Logging

IDEA 导入依赖

在这里插入图片描述

在这里插入图片描述

新建Spring核心配置文件

在这里插入图片描述

或者手动新建 applicationContext.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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/util
	http://www.springframework.org/schema/util/spring-util.xsd">


</beans>

Maven 方式创建项目

新建maven 项目

导入maven 依赖

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

测试案例

新建 对象 Demo

public class Demo {
    public void m1(){
        System.out.println("测试方法!!!!");
    }
}

让中间人 管理Demo

在 Spring 核心配置文件中 注册 Demo

类似于 创建 Demo 对象 起个名字为 demoid
<bean id="demoid" class="cn.gh.Demo"></bean>

在 测试类中 获取 Demo 对象

// 创建 Spring 第三方 核心对象
ClassPathXmlApplicationContext context = 
	new ClassPathXmlApplicationContext("applicationContext.xml");
Demo demo= (Demo) context.getBean("demoid");
demo.m1();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值