JavaEE-Spring基本应用+入门

Spring是一个轻量级开源框架,以其IoC和AOP为核心,提供大工厂模式管理Bean,方便测试和事务处理,降低组件耦合。通过BeanFactory和ApplicationContext管理对象,实现控制反转,通过setter注入实现依赖注入。在XML配置中,通过setter方法将依赖对象注入到调用者Bean中,简化程序维护。
摘要由CSDN通过智能技术生成

Spring

  • Spring概述
    • 分层的一站式轻量级开源框架,以IoC(控制反转Inversion ofControl)和AOP(面向切面Aspect Oriented programming)为内核。
  • Spring框架的优点:
    1. 大工厂,将所有对象的创建和依赖关系交给Spring容器管理,降低组件间的耦合性
    1. 方便测试,对JUnit4支持,通过注解测试Spring程序
    1. 支持声明式事务处理,通过配置完成对事务的管理
    1. 方便集成各种优秀框架
    1. 降低API使用难度(如JDBC,JavaMail等提供了封装)
    1. 非侵入式设计,使代码对框架的依赖性最小
  • Spring的体系结构
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • Spring的核心容器
  1. BeanFactory,管理Bean的工厂,负责初始化和调用生命周期方法
  2. ApplicationContext,BeanFactory的子接口,称为应用上下文。创建接口实例的两种方法
    1. 从类路径(相对路径)classPath中寻找指定(configLocation)的XML配置文件,并装载完成实例化工作ApplicationContext aplicationContext=new ClassPathXmApplication(String configLocation);
    1. 从文件系统路径(绝对路径)中寻找制定的XML配置文件,并装载完成实例化工作ApplicationContext aplicationContext=new FileSystemXmApplication(String configLocation);缺点是导致灵活性变差。
    1. Web项目中使用基于ContextLoaderListener实现的方式完成实例化ApplicationContext,只需要 在web.xml文件中添加如下代码在这里插入图片描述** 且使用场景多 **
  • 上述创建完Spring容器后,就可以获取容器中的Bean。采用如下两种方法:
  1. Object getBean(String name):根据容器中的Bean的id或name来获取指定的Bean,获取后需要进行强制类型转换。—-多
  2. T getBean(ClassrequiredYype): 根据类的类型来获取Bean的实例,泛型方法故获取Bean后不需要强制类型转换。—-少
  • 控制反转:通过实例化Spring容器(ApplicationContext),通过Spring容器来获取实现类的对象(getBean方法),即将控制权交由Spring容器,降低耦合,使程序易于维护。
    大白话:把对象的创建交由Spring的大工厂管理
  • 依赖注入:Spring容器负责将被依赖对象赋值给调用者的成员变量(即为调用者注入了它依赖的实例)。
    大白话:将对象间的调用关系交由Spring来负责管理
  1. 实现方式:
    1⃣️属性setter方法注入:Spring容器使用Setter方法注入被依赖的实例。通过** 调用无参数构造器*或无参数静态工厂方法实例化Bean后,调用该Bean(指被依赖调用的Bean)的setter对象名()方法,即可实现基于setter方法的依赖注入。———接下行
    1.在变量处申明被依赖Bean对象,并添加编写该变量的Setter方法。XxService.java文件
    package package;
    public class XxServiceImpl implentments XxService{
    //申明XxDad 属性 private XxDao xxDao;
    //添加Xx属性的setter方法,用于实现依赖注入 public void setXxDao(XxDao xxDao){ this.xxDao=xxDao;}
    //实现接口中的方法 //.........略}
    2.在xml文件中配置该Bean并使用property标签注入到调用者的Bean实例中
    <!—添加一个id为XxDao的实例 —> <bean I’d=“XxDao” class=“package.XxDaoImpl”>
    <!—添加一个id为XxService的实例 —>
    <bean I’d=“XxService” class=“package.XxServiceImpl”>
    <!—将一个id为XxDao的Bean实例注入到XxService实例中 name表示调用者Bean实例中被调用Bean的属性名 ref属性用于指定其属性值即引用id为XxDao的Bean实例 —>
    <property name=“XxDao” ref=“XxDao”>
    </bean>
    ** 注意XxService文件中的xxDao属性名和property中name的属性值的关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值