初识Spring6框架

 个人笔记梳理,仅供参考

Spring是一款主流的JavaEE轻量级开源框架

Spring的狭义和广义

广义的Spring:Spring技术栈

泛指以Spring Framework为核心的Spring技术栈

经过十多年的发展,Spring已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Framework、Spring Mvc、SpringBoot、spring Cloud、spring Data、springSecurity 等,其中 Spring Framework 是其他子项目的基础。
这些子项目涵盖了从企业级应用开发到云计算等各方面的内容,能够帮助开发人员解决软件发展过程中不断产生的各种实际问题,给开发人员带来了更好的开发体验。


狭义的 Spring:spring Framework


狭义的 Spring 特指 Spring Framework,通常我们将它称为 Spring 框架。
Spring 框架是一个分层的、面向切面的Java 应用程序的一站式轻量级解决方案,它是 Spring 技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。
Spring 有两个最核心模块: loC 和 AOP.
loC:Inverse of control 的简写,译为“控制反转”,指把创建对象过程交给 Spring 进行管理

AOP:Aspect Oriented Programming 的简写,译为"面向切面编程"。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。 

Spring Framework特点


非侵入式:使用 Spring Framework 开发应用程序时,Spring对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
控制反转:10C--Inversion ofControl,翻转资源获取方向。把自己创建资源、向环境索取资源变成环境将资源准备好,我们享受资源注入。
面向切面编程:AOP--Aspect Oriented Programming,在不修改源代码的基础上增强代码功能。容器:Spring 10℃是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML 和Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统

一站式:在 I0C和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且 Spring,旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现

引入spring-first的pom.xml文件依赖

<dependencies>
    <dependency>
<!--        引入springcontext依赖-->
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>6.0.2</version>
    </dependency>
<!--    junit-->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.6.3</version>
    </dependency>
</dependencies>

建类定义方法->按照spring规范建立xml文件,配置对象-->测试文件

 入门案例:

User.java

package com.zzq;

public class User {
    public  void  add(){
        System.out.println("add.....");
    }

    public static void main(String[] args) {
        User user=new  User();
        user.add();

    }
}

bean.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">
<!-- 完成user对象创建
bean标签
id属性:唯一标识
class属性:要创建对象所在类的全路径(包名称+类名称)
-->
    <bean id="user" class="com.zzq.User"></bean>
</beans>

TestUser.java

package com.zzq;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUser {
    @Test
    public void  testUserObject(){
        //加载spring配置文件,对象创建
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        //获取创建的对象
        User user=(User)context.getBean("user");
        System.out.println(user);
        //使用对象调用方法进行测试
        user.add();
    }
}

无参数构造执行

使用反射根据类全路径创建对象

package com.zzq;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.lang.reflect.InvocationTargetException;

public class TestUser {
    @Test
    public void  testUserObject(){
        //加载spring配置文件,对象创建
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        //获取创建的对象
        User user=(User)context.getBean("user");
        System.out.println(user);
        //使用对象调用方法进行测试
        user.add();
    }
    //反射创建对象
    @Test
    public void  testUserObject1() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //获取类Class对象
        Class clazz=Class.forName("com.zzq.User");
        //调用方法创建对象
        //Object o=clazz.newInstancce();
        User user=(User)clazz.getDeclaredConstructor().newInstance();
        System.out.println(user);
    }
}

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃java的羊儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值