Spring的学习计划路线

本文介绍了Spring框架的基本概念,包括其作为容器的角色、IOC和DI思想、配置文件详解等内容,并讲解了如何通过不同方式创建Bean和注入属性,以及Spring的生命周期管理和整合测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring 学习:

---Day01

 定义:
        负责管理项目中的所有对象
        看做项目中的对象管家
        总结:Spring框架性质是属于容器性质的

 一.不排斥其它框架,还可以帮助其它的框架管理对象
        aop支持  loc思想  spring jdbc aop事务 junit测试支持

 二.Spring最基础的4个包
        beans,context,core,expression
        最基层除了导入这4个还需要导入日志包
          
 三.关于Spring插入文件的导入约束方式
        a.perferences中的XML Catalog,添加Spring框架中的xsd文件
        b.Key type选择scheme location 同时将xsd文件的后缀版版本移动到key后
        c.进入到xml文件,Design模式中的<beans></beans>,右键进入Add DTD Information
        添加xsi,进入到specify new namespace中select XML catolog entry添加xsd文件
        Namespace Name中删去xsd文件名字的后缀版本部分

    总结Spring导入步骤:
        1.导包
        2.创建一个对象
        3.书写配置注册对象到容器
        4.测试

四.Spring项目的概念:

        思想:
        1.IOC:Inverse of control 反转控制
            详细:
                将我们创建对象的方式反转了
                以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入
                但是Spring框架
                对象的的创建以及依赖的关系可以由spring完成创建及注入
                反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序来创建(spring)

        2.DI: Dependency Injection 依赖注入
            实现IOC思想需要DI作为支持,需要IOC的环境

            注入方式:
                    set方法注入
                    构造方法注入
                    属性直接字段注入
            注入类型:(spring支持 )
                    值类型注入   :8大基本数据类型
                    引用类型注入 :将依赖类型注入

        applicationContext & BeanFactory区别:
        
            BeanFactory(Spring最原始的接口) 实现类的功能较为单一
            特点:每次获得对象时才会创建对象

            而applicationContext是每次容器启动时直接把容器中对象全部创建好了,然后直接拿( getBean() )
            同时提供更多其它的功能

            web开发中使用applicationContext,资源比较匮乏的时候就用到BeanFoctory

            applicationContext的实现类:
                1.从类的路径下加载配置文件 ClassPathXmlApplicationContext("xxx.xml")
                2.从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx");


五.Spring配置详解
        三种创建Bean方式
        <!-- 创建方式1:此方法为空参的构造方式   -->
        <!-- 创建方式2:静态工厂创建  -->
        <!-- 创建方式3:实例工厂 -->

        scope属性:
             singleton(默认值):单例对象,被标识为单例的对象在spring容器中只会存在一个实例
             prototype:多例原型,标识为多例的对象,每次再获得才会创建,每次的创建都是新的对象
             request:web环境下,对象与request声明周期一致
             session:web环境下,对象与session声明周期一致


六.Spring的属性注入
        set方法注入
        构造函数注入:constructor-arg注入
           index:限定参数的顺序  type:限定构造函数的参数类型
        p名称空间注入
        spel注入

        <!-- 构造方法注入值 -->
        注意:必须要设置空参构造方法作为默认的构造方法,否则会报错
            <bean name="regUser2" class="com.yc.bean.RegUser">
                <constructor-arg name="username" value="tom" index="0" type="java.lang.Integer"></constructor-arg>
                <constructor-arg name="car" ref="car" index="1"></constructor-arg>
            </bean>

七.管理容器在项目中的生命周期
         要求不能每次都创建一个applicationContext 容器
         使用监听器
            需要配置监听,导入spring-web.jar
            在web配置文件web.xml中配置监听
             <listener>
                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
            </listener>
            获得spring容器=>从Application域获得即可
                
            1 获得servletContext对象
            ServletContext sc = ServletActionContext.getServletContext();
            2.从Sc中获得ac容器
            WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sc);
                

--Day02

一.Spring注解代替配置文件
        1.Catalog导入新的约束(context文件约束)
            导入时前缀不能继续为空
            
        2.@Component
          @Service   //service层
          @Controler //web层
          @Repository //dao层
             4种注解方式没有区别,只是用来区别,体现分层

            @Value("")来赋值要么放在属性上 要么放在set方法上
            但是放在属性上会破坏封装性(技术角度而言)

        对对象进行注解
            a.@Autowired  //自动装配   但是对象多的时候无法选择具体注入哪一个对象
              引入辅助注解
              @Quslifier("对象名")
            b.@Resource(name="xxxx")  //指定对象直接注入

二.Spring的整合测试Junit
        注解
        @RunWith(SpringJunit4ClassRunner.class)  帮助创建容器
        @ContextConfiguration("classpath:applicationContext.xml") //指定创建容器时使用哪个配置的文件

    三.Spring中的aop,提供支持aop的开发
      横向重复,纵向抽取<面向切面编程>

        动态代理:
            Proxy.newProxyInstance(
                classLoader,Interface[] arr,InvocationHandeler handler);

        Spring中aop概念:Spring可以为容器中管理的对象生成动态代理的对象
                   Spring帮助生成代理对象
        Spring中事项aop原理:动态代理,cglib代理
        (优先使用)动态代理:必须要有接口才可以产生被代理对象,如果没有接口将无法使用动态代理技术
              cglib代理:对目标对象进行继承代理(如果该对象被final修饰,则无法使用)           

四.Sping中的aop的演示

        1.spring-aop & spring-aspects
         & sprinngsources.org.aopallance
        & springsource.org.aspectj.weaver 包导入

        2.目标对象
        3.准备通知<对目标对象增强>
        4.配置进行织入,将通知织入目标对象中

---Day03
   

一.Spring整合JDBC
            Spring中提供了一个可以操作数据库的对象,对象封装了jdbc技术
                JDBCTemplate (JDBC模板对象):与DBUtils中的QueryRunner极其相似
            
            Jar包的导入:6个基础包
                        Spring-test
                        Spring-aop
                        Junit4类库
                        c3p0连接池
                        JDBC驱动
                        Spring-jdbc
                        Spring-tx

二.Spring读取DB.properties
    <context:property-placeholder location="classpath:....">
   

三.Spring中的事务管理
        Spring封装了事务管理的代码<提供一个接口 PlatformTransactionManager接口 -->  TransactionTemplate 事务模块的对象>
        事务的操作:
                打开事务
                提交事务
                回滚事务
                
        Spring管理的几个事务的属性:
                        1.事务的隔离级别
                                    读未提交
                                    读已提交
                                    可重复读
                                    串行化
                        2.事务是否只读
                                    true<只读>/false<可操作>
                        3.事务的传播行为
                        4.Spring管理事务的方式
                                编码式<了解>
                                    将核心事务管理器配置到Spring容器
                               *xml配置(aop)
                               *注解配置(aop)
    
        Spring准备的aop事务通知:
                1.导入使用aop需要的jar包
                2.导入新的约束
                        Spring-tx.xsd约束
                    
            
                            
    
                        


   


 
 

### Spring Cloud 学习路线学习 Spring Cloud 需要掌握其核心概念以及相关技术栈的应用场景。以下是针对初学者到高级开发者的一条完整的 Spring Cloud 学习路径。 #### 1. 基础知识准备 在深入学习 Spring Cloud 之前,建议先熟悉以下基础知识: - **Java 编程基础**:熟练掌握 Java SE 和部分 Java EE 技术。 - **Spring Framework**:理解 Spring IoC 容器、AOP 及事务管理机制。 - **Spring Boot**:了解如何快速搭建基于 Spring 的项目并配置常用功能[^1]。 #### 2. 微服务架构理论 微服务是一种软件设计模式,将单体应用拆分为多个小型独立的服务单元。学习 Spring Cloud 时需理解以下内容: - 微服务的核心理念及其优势与挑战。 - RESTful API 设计原则。 - 分布式系统中的常见问题(如一致性、可用性和分区容忍性 CAP 理论)。 #### 3. Spring Cloud 核心组件详解 以下是 Spring Cloud 中几个重要的模块及其实现的功能: ##### (1) Eureka – 服务注册与发现 Eureka 是 Netflix 开发的一个用于服务治理的工具,允许客户端向服务器注册自己,并通过心跳保持状态更新。它是实现动态扩展和服务间通信的基础之一[^1]。 ```java @EnableEurekaClient @SpringBootApplication public class ServiceApplication { public static void main(String[] args) { SpringApplication.run(ServiceApplication.class, args); } } ``` ##### (2) Zuul / Gateway – API 网关 Zuul 或更现代的选择——Gateway 负责对外暴露统一入口点,支持路由转发、过滤等功能。对于新项目推荐使用 Spring Cloud Gateway 替代 Zuul[^1]。 ##### (3) Ribbon – 负载均衡 尽管自 2020 版本起 OpenFeign 不再内置 Ribbon 支持,但仍可通过引入 `spring-cloud-starter-loadbalancer` 实现负载均衡逻辑[^3]。 ##### (4) Feign – HTTP 请求声明式调用 Feign 让远程方法调用变得像本地函数一样简单直观。只需定义接口即可完成复杂的网络交互过程[^2]。 ```java @FeignClient(name="example-service", url="http://localhost:8080") public interface ExampleServiceClient { @GetMapping("/api/resource") String getResource(); } ``` ##### (5) Hystrix – 断路保护 虽然官方已停止维护 Hystrix,但替代方案 Resilience4j 同样可以有效处理熔断降级等问题。 ##### (6) Sleuth + Zipkin – 链路跟踪 为了监控复杂环境下请求流转情况,可借助这两个工具记录日志信息以便后续分析排查错误原因[^1]。 #### 4. 进阶主题探索 当掌握了基本操作之后,还可以进一步研究以下几个方面来提升技能水平: - 数据最终一致性的解决方案; - Kafka/RabbitMQ 消息队列集成实践; - Docker/Kubernetes 上部署运行容器化实例; - 测试驱动开发 TDD 方法应用于微服务体系结构之中。 #### 推荐书籍与在线课程资源 - 《Spring Microservices in Action》 by John Carnell - Udemy/Spring.io 官方文档指南页面提供了详尽说明材料可供查阅学习。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值