Spring框架

Spring框架

Java应用最广泛的框架,它的成功来源于理念,而不是技术本身

  • IOC:控制反转
  • AOP:面向切面编程
  • DI:依赖注入

非侵入式设计:
不需要继承框架提供的任何一个类,即使跟换框架,代码也不需要大改。

JavaBean

SpringBean是JavaBean的扩展,现在的JavaBean作为一个对象,提供set、get方法
SpringBean只需要为接收设置值注入set方法

Spring优势:

  • 低侵入
  • 声明式事务
  • 方便继承其他框架
  • 提供了Javaweb三层的每一层的解决方案

Spring能帮我们干什么?:
装修:
1.自己干 ×
2.找装修公司 √

IOC容器:

控制反转
可以把对象放进容器中,交给Spring去管理,并且还是单例的

把对象放进容器中,对象一旦放入容器中,这个对象在我当前的项目中就可以共享,而且默认还是单例的
id:这个对象在IOC容器中的唯一标识
class:要放到spring的IOC容器中的全类名

把容器中的对象拿出来

public void IOCTest() {
加载Spring配置文件
ApplicationContext ioc = new ClassPathXmlApplicationContext("application.xml");
这个user对象是从ioc容器中获取到的
User user = (User)ioc.getBean(User.class);
user.say();
System.out.println(user);
}

属性注入:

ref:依赖,当使用ref属性,依赖于当前容器中已经存在的bean,进行属性的注入
scope:定义bean的作用域

  • prototype:原型
  • singleton:单例(默认)
  • request:一次请求
  • session:一次会话

1.构造器注入:根据参数名,根据索引位置,根据参数类型




调用user类中的有参构造参数
2.setter注入:调用set方法来进行属性注入(常用)


</ property>

更多复杂的setter注入

  • 自定义的数据类型(address):

    如果bean要注入的是一个对象,那这个对象也要先注册到IOC容器中

    </ property>
    </ bean>


    </ property>
    依赖当前容器中存在bean来注入

  • 数组



    篮球
    足球

  • List集合


    <list value-type="java.lang.S
    董事长
    总经理

  • set集合



    韭菜
    鸡蛋

  • Map集合






  • Properties



    达摩院

自动装配

autowire:自动装配
byName:根据属性名去IOC容器中找名字相同的bean进行自动注入
byType:根据属性的类型自动注入


注解:自动装配

context: component-scan base-package="com.jsoft.entity"</context:component-scan>
并且在类中加上
@Autowirit
强制注解其他
@Qualifier ( " address1")
@Resource

Spring的bean生命周期:

1.构造器
2.注入
3.初始化
4.目标方法
5.销毁

懒初始化(延迟初始化、Servlet的初始化默认就是懒初始化)
而spring的IOC容器默认就不是懒初始化,只要spring的容器启动,所有的bean都会加载,都会初始化

AOP

  • 面向切面编程,主要用来解决一些系统层面的问题,比如日志,事务,权限
  • 在不改变元哦有的逻辑的基础上,增加游戏额额外的功能
  • AOP是OOP(面向对象)补充和完善
  • AOP横切技术,解剖开对象的内部,把一些和业务无关,都可以为业务共同的调用的逻辑封装起来,减少重复代码的使用。

通知:

增强处理(Advice),就是你想要的功能,日志,事务,权限,安全....
首先定义好,然后在想用的地方,Adivce配合Aspect的一段处理代码

连接点

JoinPoint
就是spring允许你通知的地方,一个service层的方法需要配置通知,获取这个方法的参数,方法名,返回值...

切入点(PointCutm)

一个类中有20个方法,让这20个方法中的15个在方法执行之前,执行之后或者抛出异常时干点什么,使用切入点表达式来筛选连接点。

切面

通知+切入点的结合。在什么个点上去干什么事。

织入

被通知的对象,真正的业务逻辑,可以毫不知情。两者互相之间可能并不知情,专注于自己该做的事。

posted on 2022-09-21 00:51  figh466  阅读(66)  评论(0)    收藏  举报

导航