Spring 第一篇(入门案例和IOC)

 

 一、Spring框架概述

1.Spring是轻量级的开源的一站式的JavaEE框架 

什么是轻量级?不需要大量的jar包,其组件对环境的依赖程度较小。开源即免费,可白嫖

什么是一站式?就是普通项目一般是采用三层架构来搭建的,像mybatis框架只能用来处理数据访问层(持久化层),而这三层架构都可以使用spring框架进行处理

2.Spring可以用来解决企业应用开发的复杂性

3.Spring有两个核心部分:IOC(Inverse of Control控制反转)和AOP(Aspect Oriented Programming 面向切面编程)

(1)IOC:控制反转,把创建对象的过程交给Spring管理

(2)AOP:面向切面:在不修改源代码的前提下,进行功能的增强

4.Spring特点

(1)方便解耦,简化开发

(2)AOP编程支持

(3)方便程序测试

(4)方便和其他框架整合(比如和mybatis框架进行整合)

(5)方便进行事务的操作

(6)降低Java API的开发难度

①Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

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

③​只需要通过配置就可以完成对事务的管理,而无需手动编程 ​

④可以通过注解方便的测试Spring程序 ​

⑤pring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持 ​

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

二、Spring框架的访问和下载,和组成

2.1 访问和下载

官方网站:Spring | Home

下载地址:JFrog

2.2Spring的组成

Spring架构由诸多模块组成,可分类为

  • 核心技术:依赖注入,事件,资源,i18n,验证,数据绑定,类型转换,SpEL,AOP

  • 测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。

  • 数据访问:事务,DAO支持,JDBC,ORM。

  • Spring MVC和 Spring WebFlux Web框架。

  • 集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。

  • 语言:Kotlin,Groovy,动态语言。

GroupId ArtifactId 说明
org.springframework spring-beans Beans 支持,包含 Groovy
org.springframework spring-aop 基于代理的AOP支持
org.springframework spring-aspects 基于AspectJ 的切面
org.springframework spring-context 应用上下文运行时,包括调度和远程抽象
org.springframework spring-context-support 支持将常见的第三方类库集成到 Spring 应用上下文
org.springframework spring-core 其他模块所依赖的核心模块
org.springframework spring-expression Spring 表达式语言,SpEL
org.springframework spring-instrument JVM 引导的仪表(监测器)代理
org.springframework spring-instrument-tomcat Tomcat 的仪表(监测器)代理
org.springframework spring-jdbc 支持包括数据源设置和 JDBC 访问支持
org.springframework spring-jms 支持包括发送/接收JMS消息的助手类
org.springframework spring-messaging 对消息架构和协议的支持
org.springframework spring-orm 对象/关系映射,包括对 JPA 和 Hibernate 的支持
org.springframework spring-oxm 对象/XML 映射(Object/XML Mapping,OXM)
org.springframework spring-test 单元测试和集成测试支持组件
org.springframework spring-tx 事务基础组件,包括对 DAO 的支持及 JCA 的集成
org.springframework spring-web web支持包,包括客户端及web远程调用
org.springframework spring-webmvc REST web 服务及 web 应用的 MVC 实现
org.springframework spring-webmvc-portlet 用于 Portlet 环境的MVC实现
org.springframework spring-websocket WebSocket 和 SockJS 实现,包括对 STOMP 的支持
org.springframework spring-jcl Jakarta Commons Logging 日志系统

 三、Spring的入门案例

1、创建一个maven工程,并在pom.xml文件中导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.qf</groupId>
    <artifactId>spring-05</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--Spring依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!--测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>
    </dependencies>
</project>

2、在src/main/java/com/ayit目录下创建实体类User

package com.ayit;

public class User {
    
    public User(){
        System.out.println("无参构造方法执行");
    }

    public void addUser(){
        System.out.println("创建用户");
    }
}

3、在src/main/resources目录下创建application.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">

    <!--id:类名,首字母小写   class:类的全限定名-->
    <bean id="user" class="com.ayit.User"></bean>

</beans>

 4.编写测试类

import com.ayit.User;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
    @Test
    public void test(){
        ClassPathXmlApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = (User) applicationContext.getBean("user");
        user.addUser();
    }
}

 5、结果

 6.目录结构:

7.BeanFactory和ApplicationContext的区别

ApplicationContext:它在构建核心容器的时候,创建对象采用的策略是立即加载的方式

BeanFactory:它在构建核心容器的时候,创建对象采用的策略是延迟加载

ApplicationContext是BeanFactory的子接口,对BeanFactory提供了以下扩展</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小yu别错过

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

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

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

打赏作者

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

抵扣说明:

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

余额充值