当前位置: 首页 > news >正文

学Spring5源码之入门

学Spring5源码之入门

  • 1 Spring概述
  • 2 案例demo
        • 1 使用IDEA创建一个普通项目(可不使用maven)
        • 2 导入Spring5相关jar包,添加到项目依赖中
        • 3 创建一个普通用户类
        • 4 创建一个Spring的配置文件如 spring-bean.xml
        • 5 创建测试代码类
        • 6 测试结果

1 Spring概述

起源

Spring是一个开源框架,它由[Rod Johnson](https://baike.baidu.com/item/Rod Johnson?fromModule=lemma_inlink)创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益

组成

Spring框架由七个定义明确的模块组成:

  • 核心容器
  • 应用上下文模块
  • AOP模块
  • JDBC抽象和DAO模块
  • 对象/关系映射模块
  • Web模块
  • MVC框架

总结:

1 Spring是轻量级的开源的JavaEE框架

2 Spring可以解决企业应用开发的复杂性

3 Spring 有两个核心部分:IOC 和 Aop

  • IOC:控制反转,把创建对象过程交给 Spring 进行管理
  • Aop:面向切面,不修改源代码进行功能增强

4 Spring 特点:

  • 方便解耦,简化开发

  • Aop 编程支持

  • 方便程序测试

  • 方便和其他框架进行整合

  • 方便进行事务操作

  • 降低 API 开发难度

2 案例demo

步骤

1 使用IDEA创建一个普通项目(可不使用maven)

2 导入Spring5相关jar包,添加到项目依赖中

  • commons-logging-1.1.1.jar
  • spring-beans-5.2.6.RELEASE.jar
  • spring-context-5.2.6.RELEASE.jar
  • spring-core-5.2.6.RELEASE.jar
  • spring-expression-5.2.6.RELEASE.jar

3 创建一个普通用户类

public class User {
 public void add() {
 System.out.println("添加用户......");
 }
}

4 创建一个Spring的配置文件如 spring-bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
 <!--配置 User 对象创建--> 
 <bean id="user" class="com.cf.spring5.User"></bean>
</beans>

5 创建测试代码类

@Test
public void testAdd() {
 // 1 加载 spring 配置文件  ClassPath.. 表示从类路径寻找 即src文件下
 ApplicationContext context =
 new ClassPathXmlApplicationContext("spring-bean.xml");
 // 2 获取配置创建的对象
 User user = context.getBean("user", User.class);
 System.out.println(user);
 user.add();
}

6 测试结果

com.cf.spring5.User@4abdb502
添加用户......

相关文章:

  • Maven - 3、详解maven解决依赖问题
  • 1行代码提取6种TCGA表达矩阵和临床信息
  • 直升飞机领衔、三百辆婚车开道,三十台巨型吊车,小伟婚礼超豪华
  • 【2023秋招面经】OPPO 前端 一面(40min)
  • Nifi05 Nifi单节点、集群部署以及迁移
  • SQL server发布订阅事务复制新增表的解决方案(不重新初始化)
  • Tableau2——折线图,饼图
  • 对话腾讯天琴赵伟峰:当音乐与科技结合,会碰撞出怎样的火花?
  • codePen前端编码神器
  • Android 10.0 系统settings系统属性控制一级菜单显示隐藏
  • Linux多路I/O复用入门必读 -- epoll实现原理以及使用方法
  • systemverilog中的bind
  • 【视频】逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法
  • 数说故事×IDEA荣获语言与智能技术竞赛「视频语义理解赛题」季军
  • 30岁生日收到公司的生日礼物,一份裁员通知,有人从此一蹶不振,而我逆风翻盘,重获新生~
  • ES6指北【2】—— 箭头函数
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 2017届校招提前批面试回顾
  • 2017年终总结、随想
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • javascript从右向左截取指定位数字符的3种方法
  • JS数组方法汇总
  • Markdown 语法简单说明
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • QQ浏览器x5内核的兼容性问题
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue官网教程学习过程中值得记录的一些事情
  • 初探 Vue 生命周期和钩子函数
  • 动态规划入门(以爬楼梯为例)
  • 利用DataURL技术在网页上显示图片
  • 深度解析利用ES6进行Promise封装总结
  • 为什么要用IPython/Jupyter?
  • Spring Batch JSON 支持
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​用户画像从0到100的构建思路
  • ###项目技术发展史
  • (07)Hive——窗口函数详解
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)事件处理——(7)简单事件(Simple events)
  • (52)只出现一次的数字III
  • (二)Linux——Linux常用指令
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • @NestedConfigurationProperty 注解用法
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [Android]使用Git将项目提交到GitHub
  • [Angular] 笔记 8:list/detail 页面以及@Input