Spring(一)简述
一、Spring简述
一段费话
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
二、Spring体系结构
2.1、体系结构介绍
- Spring Core:管理bean与bean之间的依赖
- Spring Web:提供Web应用开发的支持
- Spring DAO:支持包括一致的异常处理和编程方式
- Spring BeanFactory:功能加强的一个子接口
- Spring MVC:针对Web应用MVC思想实现
- Spring ORM:用于与流行ORM框架整合
- Spring AOP:AOP面象切面编程,提供与OP联盟兼容的编号实现
以上大部分都可以 单独使用
2.2、各部分
三、Spring设计理念
四、如何获取Spring
下载地址
http://repo.spring.io/libs-release-local/org/springframework/spring/
五、使用Spring实现Hello Spring
添加包
建立类
package com.pb.demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloSpring { private String str; public void print() { System.out.println("Hello! " + this.getStr()); } public static void main(String[] args) { // 创建ApplicationContext上下文件对象 ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); HelloSpring hello=(HelloSpring) context.getBean("hellospring"); hello.print(); } public String getStr() { return str; } public void setStr(String str) { this.str = str; } }
建立applicationContext.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" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="hellospring" class="com.pb.demo.HelloSpring"> <property name="str" value="Spring"></property> </bean> </beans>
另一个
package com.pb.demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringDemo1 { private String name; private String job; public void print() { System.out.println("姓名: " + this.getName() + " \t职业: " + this.getJob()); } public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); SpringDemo1 demo=(SpringDemo1)context.getBean("springdemo"); demo.print(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="hellospring" class="com.pb.demo.HelloSpring"> <property name="str" value="Spring"></property> </bean> <bean id="springdemo" class="com.pb.demo.SpringDemo1"> <property name="name" value="林冲"/> <property name="job" value="80万禁军教头!"/> </bean> </beans>
六、Spring对单态和工厂模式的支持
6.1、工厂模式
package com.pb.lnk; /** * 墨盒接口 * @author Administrator * */ public interface Lnk { public void getColor(); }
实现类
package com.pb.lnk; /** * 彩色墨盒 * @author Administrator * */ public class Color implements Lnk { @Override public void getColor() { System.out.println("=======使用彩色墨盒打印!========"); } } package com.pb.lnk; /** * 灰色墨盒 * @author Administrator * */ public class Grey implements Lnk { @Override public void getColor() { System.out.println("--------使用灰色墨盒打印!---------"); } }
测试类
package com.pb.lnk; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 墨盒测试类 * * @author Administrator * */ public class LnkTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); Lnk k=null; k=(Lnk) context.getBean("color"); k.getColor(); k=(Lnk) context.getBean("grey"); k.getColor(); } }
applicationContext.xml
<bean id="color" class="com.pb.lnk.Color"></bean> <bean id="grey" class="com.pb.lnk.Grey"></bean>
6.2、单态模式支持
package com.pb.lnk; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 单态模式(单实例模式) * @author Administrator * */ public class LnkTest2 { public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); Lnk lnk1=null; Lnk lnk2=null; lnk1=(Lnk)context.getBean("color"); lnk2=(Lnk)context.getBean("color"); System.out.println(lnk1==lnk2); //结果是true表示2个是同一个对象 } }
七、Spring核心机制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决