Spring 的一些笔记

来自狂神的笔记截图

spring 的目的是为了解决企业级开发的复杂性而创建的,简化开发

约定大于配置

微服务架构的四个核心问题

1. 服务很多,客户端怎么访问?

2.这么多服务?服务之间如何通信?

3.这么多服务,如何治理?

4.服务挂了怎么办?

解决方案:

sprind cloud 生态!解决上面的问题

spring boot 构建项目,springcloud 协调

万变不离其宗

1.API(网管,服务路由的问题)

2.Http rpc (网络通信问题)

3.注册和发现(高可用)

4.熔断问题(服务降级,雪崩问题)

问题根源,网络不可靠

微服务与微服务架构

        微服务:强调的是服务的大小,他关注的是某一个点,还是解决具体某一个问题/提供对应服务的一个服务应用,狭义的看,可以看成一个model

        微服务架构:是一种新的架构形式

1:什么是IOC

    1.1 什么是ioc:控制反转:把对象的创建和对象之间的调用过程交给spring进行管理

    1.2 ioc的目的:进行解耦 

2:IOC的底层原理  

        2.1xml解析;工厂模式;反射

        2.2:ioc如何实现:底层就是使用的对象工厂进行创建对象

3.Spring提供IOC容器实现两种方式:(两个接口)

        3.1:BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员使用,

在加载配置文件的时候不会创建对象,在获取对象(使用)才去创建对象

        3.2:ApplicationContext:BeanFactory的子接口,提供更多更强大的功能,一般由开发人员进行使用,加载配置文件时候创建对象

4.IOC操作Bean管理

        1.什么是Bean管理指的是两个操作

                1.1:spring 创建对象

                1.2:Bean注入属性

        2.Bean管理的两种实现方式

                2.1:基于xml配置文件方式实现

                2.2:基于注解方式实现

        3.1基于xml方式创建对象 

<bean id="user" class="com.hu.spring5.User"></bean>

        3.2:基于xml方式注入属性

    <bean id="book" class="com.hu.spring5.Book" >
<!--    set方式注入属性    property完成属性注入-->
        <property name="name" value="eee"></property>
    </bean>
<!--    有参构造注入属性-->
    <bean id="orders" class="com.hu.spring5.Orders" >
        <constructor-arg name="name" value="123"></constructor-arg>
    </bean>

         DI:依赖注入,就是注入属性 

4.1注入属性-外部bean

4.2注入属性内部bean和级联赋值    

<!--    级联赋值-->
    <bean id="emp" class="com.hu.bena.Emp">
        <property name="dept" ref="dept"></property>
        <property name="dept.dname" value="研发部"></property>
        <property name="ename" value="小名"></property>
        <property name="gender" value="男"></property>
    </bean>
    <bean id="dept" class="com.hu.bena.Dept">
        <property name="dname" value="开发部"></property>
    </bean>

5.1xml注入集合属性

        5.11:注入数组类型属性

        5.1.2:注入List集合类型属性

        5.1.3:注入Map集合类型属性

 <bean id="student" class="com.hu.CollectionType.Student">
<!--        数组属性注入-->
        <property name="courses">
            <array>
                <value>java</value>
                <value>数据库</value>
            </array>
        </property>
        <!--        list注入-->
        <property name="frends">
            <list>
                <value>java</value>
                <value>数据库</value>
            </list>
        </property>
        <!--        map注入-->
        <property name="works">
            <map>
                <entry key="JAVA" value="java"></entry>
                <entry key="PHP" value="php"></entry>
            </map>
        </property>
        <!--        set注入-->
        <property name="sets">
            <set>
                <value>Mysql</value>
                <value>Redis</value>
                <value>Pgsql</value>
            </set>
        </property>
    </bean>

5:在集合中设置对象类型

6.把集合注入部门抽取出来

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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/util
        http://www.springframework.org/schema/util/spring-util.xsd">
    <util:list id="bookList">
        <value>易筋经</value>
        <value>九阴真经</value>
        <value>李华宝典</value>
    </util:list>
    <util:list>
        <bean id="dd" class="com.hu.CollectionType.Book"></bean>
    </util:list>
    <bean id="book" class="com.hu.CollectionType.Book">
        <property name="list" ref="bookList"></property>
    </bean>
</beans>

7.Ioc操作Bean管理(FactoryBean)

        7.1:Spring有两种类型Bean,一种是普通的bean,另外一种工厂bean(FactoryBean)

        7.2:普通bean:在配置文件定义Bean类型就是返回类型

        7.3:工厂Bean:在配置文件定义bean类型可以和返回类型不一样

        第一步:创建类,让这个类作为工厂bean,实现接口FactoryBean

        第二部:实现接口里面的方法,在实现的方法中定义返回的bean类型

8.bean管理(bean的作用域)

        1.在spring里面,设置创建的bean是单实例还是多实例

        2.在默认情况下创建的bean是单实例对象

        3.在spring设置bean是实例还是多实例;bean标签中的<scope>属性 

9.bean管理(bean的生命周期)

        1.什么是生命周期:对象的创建到销毁的过程

        2:bean的生命周期:1.创建bean实例,通过无参构造2.为bean设置属性和对其他bean的引用(调用set方法)3.调用bean的初始化方法(对象获取了)4:bean可以使用了5.当容器关闭的时候,调用bean 的销毁方法

10.ioc(控制反转)xml自动装配

        bean标签中autowire属性(byname:根据属性的名称注入,bytype:根据属性的类型注入)

11.ioc(控制反转)bean管理(引入外部属性文件  )        

        1:引入context名称空间

12:什么是注解

        1.注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值)

        2。使用注解,注解作用在类上面,方法上面,属性上面

        3.使用注解的目的:简化xml配置

13:spring提供bean管理中创建对象提供注解

        1:@Controller

        2:@Service

        3:@Controller       

        4:@Repository

        上面四个注解功能都是一样的,都可以用来创建bean实例

14:基于注解创建对象

        第一步:引入spring-aop的包

        第二部:开启扫描:

<context:component-scan base-package="com.hu"></context:component-scan>

15基于注解注入属性

        1:@autowired:根据属性类型进行自动装配

        2:@qualifier:根据属性名称进行注入

        3:@resource:可以根据类型注入,也可以根据名称注入

        4:@value:注入普通属性

       1~3:注入对象类型  

        @qualifier要和@autowired一起使用

16.完全注解开发

        1:创建配置类,替代xml文件

5.AOP(概念)

        1.什么是aop(Aspect:切面,方面 Oriented:面向 Programming:设计,编程),通过预编译方式和运行期间动态代理实现。

        2.实现动态代理

        2.1:调用newProxyInstance方法:三个参数1:类加载器2:增强方法所在的类,这个类实现的接口,支持多个接口3:实现这个接口InvocationHandler,创建对象,写增强方法

        3.aop操作相关的术语

        3.1:连接点: 切入点 通知(增强)切面

         4.AOP操作(准备)

                1.Spring框架一般都是基于AspectJ实现AOP操作

                什么是AspectJ:独立的AOP框架,不是Spring的组成部分

        5.切入点表达式

                1.作用,知道对哪个类里面的哪个方法进行增强

                2.语法结构

                    execution([权限修饰符][返回类型][类全路径][方法名称][参数列表])

         6.实现aop步骤

                6.1:在spring配置文件中,开启注解扫描

                6.2:使用注解创建User和UserProxy对象

                6.3:在增强类上面添加注解@aspectj

                6.4:在spring配置文件中开启生成代理对象

        7.相同的切入点进行抽取

        8.多个增强类对用一个方法进行增强,设置优先级

                8.1在增强类的上面添加注解@order(数字类型的值),值越小优先级越高

6.Jdbctemplate(概念和操作)

        1.什么是jdbctemplate:spring框架对jdbc进行封装

        2.spring创建数据库连接1:引入jar包2:配置数据库连接池3:创建jdbctemplate对象实例

7.事务

        1.什么是事务:事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败

        2.事务四大特性:1,原子性2,一致性3,隔离性4,持久性(ACID)

        3:脏读,不可重复读,虚度(通过设置事务隔离级别解决问题)

 8.@nullable注解

        1:@nullAble 可以用在方法、属性、参数上面;标识方法的返回数值可以为空,属性可以为空,参数可以为空

9.springwebflux

1:响应式编程

2:SpringWebflux:基于注解编程模型

3:SpringWebflux:基于函数式编程模型

4:同步与异步:同步:针对调用者:调用者发送请求,如果等着对方回应之后才去做其他事情就叫做同步;如果发送请求之后不等着回应就去做其他事情就是异步

5:阻塞和非阻塞:针对被调用者:被调用者收到请求之后,做完请求之后才给出反馈就是阻塞;收到请求之后马上给出反馈后再去做事情就是非阻塞。

6:优势:一:提高并发量;二:spring5是基于java8,可以使用函数式编程方式实现路由请求

7:springmvc和springwebflux的区别:

8:一:都可以使用注解方式,都运行在tomcat等容器中;二:springMvc采用命令式编程,webFlux采用异步响应式编程

10.@Bean:生成一个bean供spring管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring是一个开源的Java框架,用于构建企业级应用程序。它提供了一种轻量级的、非侵入式的开发方式,通过依赖注入和面向切面编程等特性,简化了Java应用程序的开发过程。 以下是关于Spring学习的一些笔记: 1. IoC(控制反转):Spring通过IoC容器管理对象的创建和依赖关系的注入。通过配置文件或注解,将对象的创建和依赖关系的维护交给Spring容器来管理,降低了组件之间的耦合度。 2. DI(依赖注入):Spring通过依赖注入将对象之间的依赖关系解耦。通过构造函数、Setter方法或注解,将依赖的对象注入到目标对象中,使得对象之间的关系更加灵活和可维护。 3. AOP(面向切面编程):Spring提供了AOP的支持,可以将与业务逻辑无关的横切关注点(如日志、事务管理等)从业务逻辑中分离出来,提高了代码的可重用性和可维护性。 4. MVC(模型-视图-控制器):Spring提供了一个MVC框架,用于构建Web应用程序。通过DispatcherServlet、Controller、ViewResolver等组件,实现了请求的分发和处理,将业务逻辑和视图展示进行了分离。 5. JDBC和ORM支持:Spring提供了对JDBC和ORM框架(如Hibernate、MyBatis)的集成支持,简化了数据库访问的操作,提高了开发效率。 6. 事务管理:Spring提供了对事务的支持,通过声明式事务管理和编程式事务管理,实现了对数据库事务的控制和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值