1. Spring简介
1.1 Spring 核心设计思想
1.1.1 Spring 是什么?
- Spring 是包含了众多具法的 IoC 容器。
- Spring 指的是 Spring Framework(Spring 框架),它是个开源框架,Spring 持泛的应场景,它可以让 Java 企业级的应程序开发起来更简单。
1.1.1.1 什么是IoC容器?
- 容器是来容纳某种物品的装置。
- IoC = Inversion of Control 翻译成中是“控制反转”的意思,控制权发的反转,不再是上级对象创建并控制下级对象了,是下级对象把注将当前对象中,下级的控制权不再由上级类控制了,这样即使下级类发任何改变,当前类都是不受影响的,这就是 IoC 的实现思想。
- Spring具备两个核心功能:将对象存到容器,从容器中取出对象。对象的创建和销毁的权利都交给 Spring 来管理了,它本身具备了存储对象和获取对象的能。
1.1.1.2 DI 概念说明
DI 是 Dependency Injection 的缩写,翻译成中是“依赖注”的意思。依赖注就是由 IoC 容器在运期间,动态地将某种依赖关系注到对象之中。所以,依赖注(DI)和控制反转(IoC)是从不同的度的描述的同件事情,就是指通过引 IoC 容器,利依赖关系注的式,实现对象之间的解耦,IoC 是“标”也是种思想,标和思想只是种指导原则,最终还是要有可的落地案, DI就属于具体的实现。
1.1.1.3 IoC容器和普通程序开发的区别
- 将对象存储在 IoC 容器相当于将以后可能的所有具制作好都放到仓库中,需要的时候直接取就了,完再把它放回到仓库。
- new 对象的式相当于,每次需要工具了才现做,用完扔掉了也不会保存,下次再用的时候还得重新做。
1.2 Spring 创建和使用
1.2.1 创建 Spring 项目
使 Maven 式来创建个 Spring 项,创建 Spring 项和 Servlet 类似。
-
创建个 Maven 项
然后跳转到了这个页面:
-
添加 Spring 框架持
org.springframework spring-context 5.2.3.RELEASE
在项的 pom.xml 中添加 Spring 框架的持spring-context(spring 上下)和spring-beans(管理对 象的模块),xml 配置如下:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.3.RELEASE</version> </dependency>
-
添加启动类
最后在创建好的项 java 件夹下创建个启动类,包含 main 法即可:public class App {
public static void main(String[] args) {}
}
到此为止,一个spring项目就搭建好了。
1.2.2 存储 Bean 对象
Bean 就是 Java 语中的个普通对象,例如:
public class User { public String sayHi(String name) { return name + " hello!"; } }
-
创建 Bean
public class User {
public String sayHi(String name) {
return name + " hello!";
}
} -
将 Bean 注册到容器
<?xml version="1.0" encoding="UTF-8"?>
<<1>>在创建好的项中添加 Spring 配置件 spring-config.xml,将此件放到 resources 的根录下, 如下图所示:
<<2>> spring-config.xml 配置件的固定格式为以下内容,复制粘贴即可
<<3>> 将 User 对象注册到 Spring 中就可以,在 标签中添加配置 ,格式如下:
<beans>
<bean id="user" class="com.bit.User"></bean>
</beans>
1.2.3 获取 Bean 对象
-
创建 Spring 上下对象
<<1>>使 ApplicationContextApplicationContext context = new ClassPathXmlApplicationContext(“spring-con fig.xml”);
<<2>>使 BeanFactory
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
ApplicationContext VS BeanFactory
- 继承关系和功能:Spring 容器有两个顶级的接:BeanFactory 和 ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能, ApplicationContext 属于 BeanFactory 的类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性, 还添加了对国际化持、资源访问持、以及事件传播等的持。
- 性能:ApplicationContext 是次性加载并初始化所有的 Bean 对象, BeanFactory 是需要那个才去加载那个,因此更加轻量。
<<3>>使用ClassPathXmlApplicationContext
ClassPathXmlApplicationContext 属于 ApplicationContext 的类,拥有 ApplicationContext 的所有功能,通过 xml 的配置来获取所有的 Bean 容器。
-
获取指定的 Bean 对象
// 1.得到 Spring 上下?对象
ApplicationContext context = new ClassPathXmlApplicationContext(“spring-con fig.xml”);
// 2.加载某个 bean
User user = (User) context.getBean(“user”);
Bean 的 Id 要对应,如下图所示:
getBean 法的更多法
根据类型获取 Bean:
UserController user = context.getBean(UserController.class);
名称