Spring笔记一(概述)
温馨提示:
本文最后更新于 2023年11月30日,已超过 519 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
一.Spring简介
- Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。
- Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。
- Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。
百度百科简介
二.spring特点
- 非侵入式: 使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染,对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
- 控制反转: IOC--Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源变成环境将资源准备好,我们享受资源注入。
- 面向切面编程: AOP--Aspect Oriented Programming,在不修改源代码的基础上增强代码功能.
- 容器: SpringIOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率
- 组件化: Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML和 Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统.
- 一站式:在IOC 和AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且 Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现。
三.spring模块组成
- dependency injection: 依赖注入
- events:事件
- resources:资源
- i18n:国际化
- validation:数据校验
- data binding:数据绑定
- type conversion:类型转换
- SpEL:表达式
- AOP:面向切面
四.Spring6环境要求
JDK17+ maven3.6+
五. 入门
5.1 项目创建
使用jdk17创建一个maven父项目,再创建一个子项目。
在子项目中引入spring6依赖和test依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.12</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.2</version>
</dependency>
5.2 测试
创建用户类
public class User {
//无参构造
public User(){
System.out.println("无参构造对象。。。。。。。。。。。。。。");
}
//测试方法
public void testUser() {
System.out.println("testUser.......................");
}
}
在根路径下创建xml配置文件(bean.xml),在xml文件中加入user配置,然后即可在spring中使用user对象
<?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">
<!-- bean配置文件,通过spring来管理对象的生命周期-->
<bean id="user" class="com.wu.learn.user.User"></bean>
</beans>
测试
public class TestUser {
@Test
public void testUser(){
//spring上下文,指定根路径下的xml文件生成
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//从上下文中获取user对象
User user = (User) context.getBean("user");
//使用user对象
user.testUser();
}
}
5.3 总结
在使用ApplicationContext时,整体流程
- 加载bean.xml文件
- 解析xml文件
- 获取xml文件中bean标签的id和class值
- 通过反射进行对象创建(大致方式如下)
@Test
public void clazzUser() throws Exception{
Class<?> aClass = Class.forName("com.wu.learn.user.User");
User user = (User) aClass.getDeclaredConstructor().newInstance();
user.testUser();
}
- 创建好的对象放到了spring容器中(就是一个map),DefaultListableBeanFactory
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);
正文到此结束
- 本文标签: Java Spring
- 本文链接: https://www.tianyajuanke.top/article/74
- 版权声明: 本文由吴沛芙原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权