【框架系列01】Spring Framework 框架系列

Spring Framework 5 框架系列



概念

  • 什么是Spring?

    • Spring 是一个轻量级的*(对象)*控制翻转(IOC/DI)和面向切面编程(AOP)的对象容器框架;
    • 极大简化开发过程,降低开发难度;
  • 什么是控制翻转(IOC)?

    Spring 用户相当于窃取 Spring 成果的存在

    举例:

    我 想要生一个孩子

    我 需要付出的代价是:生孩子、喂奶、教他读书……

    我 生孩子的目的是:玩儿、洗完、赚钱、养老……

    现在有一个第三方机构,可以帮我完成生孩子所付出的代价,也就是可以替我生产、喂奶、教学

    所以我只要等着玩孩子、让他洗碗、赚钱就可以了

  • 什么是 依赖注入(DI) ?

    • 对象 new 出来之后,由 Spring 来决定 setget
    • IOC是思想,DI是解决方案
  • 下载

    • 官网(文档最底部)下载最新版的dist压缩包




五个核心 jar 包

commons-logging-1.2.jar
spring-beans-5.1.7.RELEASE.jar
spring-context-5.1.7.RELEASE.jar
spring-core-5.1.7.RELEASE.jar
spring-expression-5.1.7.RELEASE.jar

commons-lang.3.3.9.jar 需要自己下载




控制翻转 IOC 依赖注入 DI

  • 引用核心类
public class TestGetBean{
    public static void main(String[] args){
        // 原始方法 创建对象
        Person p = new Person();
        p.setAge(18);
        
        // 控制翻转后 创建对象
        ClsssPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");  
        // ↑ ↑  通过 ClassPath 查找 xml 文件 applicationContext.xml
        // ↑ ↑  通过 ApplicationContext(应用程序上下文) 查找 应用程序上下文
        // 有了上面两个就可以通过 ctx 进行 getBean 了
        Object bean = (Person)ctx.getBean("person");
        bean.setAge(18);
        bean.setName("张三");
        // -------- 分割线 ---------
        Sout(bean.getName());
        Sout(bean.getAge() );
    }
}
  • 配置文件 applicationContext.xml 中
// 添加
<beans …… >
	<bean id="person" class="com.…….Person"></bean>
</beans>




解耦合 && 属性

@Data // Lombok 注释:替代set / get / toString 方法
public class Person{
	private Food foot;
}

@Data
public class Food{
    private int hungry;
}
<beans …… >
    <bean id="person" class="…….Person">
    	<constructor-arg name="name" value="zhangsan"></constructor-arg>
      	<constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="food" ref="food"></constructor-arg>
    
    </bean>
</beans>

<constructor-arg name="name" value="zhangsan"></constructor-arg>

其中:constructor-arg是属性,value是,ref代表引用其他的类

Food food = ctx.getBean("food",Food.class);

String a = ToStringBuilder.reflectionToString(person);
Sout(a);




ApplicationContext.xml 文件的详情

<project xmlns="http://maven.apache.org/POM/4.0.0" <!--这里只是一个标签-->
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

xml文件的定义


  • 加载多个配置文件
// 文件一: ApplicationContext.xml
// 文件二: ApplicationContext-service.xml
// 调用:

// 方法一:
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml","ApplicationContext-service.xml");
// 方法二:
//将字符串定义成一个数组

// 方法三:在一个 XML 文件中使用
<import resource="applicationContext-service1.xml">
<import resource="applicationContext-service2.xml">
// 优化
<import resource="application-*.xml">
    

// ………………




总结

  • new 换成 <bean id="xxx" class="xxx.class"></bean>
  • set换成 <constructor-arg name="xxx" value="xxx"></constructor-arg>
  • 配置文件的开头部分的功能
  • 引用 一个 / 多个 配置文件的方式




相关网址

Spring Framework 仓库地址:http://repo.spring.io/libs-release-local/org/springframework/spring/

Spring 官方推荐开发工具(STS):https://spring.io/tools


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值