Spring项目的创建和使用
因为Spring是一个容器,容器里面存放的是Bean对象 它可以完成主要两个操作:
1.往容器里面存放Bean对象 2.从容器里面取出Bean对象
创建Spring项目
创建Spring项目主要分三个步骤:
- 创建Maven项目
- 添加Spring-content和Spring-Bean
创建一个Maven项目
和我们之前的Servlet项目一样
添加资源
还是到Maven中央仓库中找Spring-content和Spring-bean然后添加到pom.xml中即可
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>
这里还是最好配置一下国内源: 在setting里面找到maven,然后从网上找一个setting.xml复制到.m2目录里面.
另外,还需要配置一下新项目的setting,总之就是要配置好两个地方
创建启动类
直接在蓝色文件夹java里面创建一个类,里面再包含main方法就可以了
将Bean存到容器中
Bean就是类的意思.
创建Spring配置文件
在main函数中的resources的文件夹中创建一个spring配置的文件
<?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">
</beans>
创建Bean对象
在java文件夹中创建一个Bean类
将Bean对象通过配置文件注册
在刚才的Spring-config.xml中引入我们刚才创建好的Bean对象,这是声明注入,具体什么时候注入还需要看上下文的对象
<bean id="user" class="com.beans.User"></bean>
- id和class名字可以不同,但是尽量要符合类的描述.
- 一般的规范就是id是小驼峰,class是大驼峰且写上包名
从Spring中取出想要的对象
这个过程主要分为以下三个步骤: 1.得到Spring的上下文对象 2.再通过上下文对象提供的方法来找到我们想要使用的Bean对象 3.使用Bean对象提供的方法
得到Spring的上下文对象
因为Spring是一个容器,按照规定,我们要是想要获取到想要的对象,就要先得到上下文对象
ApplicationContext applicationContext=
new ClassPathXmlApplicationContext("spring-config.xml");
使用ApplicationContext作为上下文对象. 使用ClassPathXmlApplicationContext构造方法 参数是我们设置的Spring的配置文件的名字
另外,还有一种方法也可以获取Spring的上下文,就是BeanFactory
public static void main(String[] args) {
BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
User user= (User) beanFactory.getBean("user");
user.print();
}
得到的上下文对象是BeanFactory对象,使用的是XmlBeanFactory进行实例化 还是通过Bean对象的id来获取对象
BeanFactory和ApplicationContext的区别
1.ApplicationContext是BeanFactory的子类 所以ApplicationContext会支持更多的功能,如国际化的支持,资源访问的支持,事件和传播的支持 2.BeanFactory是懒加载,只有使用到了那个对象的时候,才去加载, 这样的优点是节省了系统资源但是加载时间长 ApplicationContext是饿加载,它会将所有的Bean对象全部加载下来,这样的优点是加载时间短但是浪费系统资源
通过上下文对象获取Bean
得到上下文之后呢,我们就可以通过指定的id名字来获取指定的Bean了 其实就可以将这个上下文看作是一个HashMap,其实真实情况下也真的是HashMap结构,key里面存放的是Bean的id,value里面放的是Bean对象本身 方法一:通过类的名字+强制转换
User user= (User) applicationContext.getBean("user");
因为getBean方法返回的是Object对象,所以需要强制转化一下. 另外,这里user对象的获取也体现了IOC思想,使用的是上下文注入的方式 方法二:通过类.class
User user=applicationContext.getBean(User.class);
直接就是获取这种User类,但是这有一个弊端,就是如果注入了同一个类,但是名字不同,这样方法就报报错:NoUniqueClass,不可以找到指定的类 方法三:通过类的名字+类.class
User user=applicationContext.getBean("user",User.class);
这样就可以不用强制类型转化了,而且还可以避免找不到指定的类的情况
使用Bean对象
得到Bean对象之后,就可以调用它的方法了
user.print();
|