🏙哈喽,大家好,我是小浪。那么从今天开始,我就要开始更新spring框架全系列的博客了;本专栏免费阅读,最好能够点个订阅,以便于后续及时收到更新信息哈!🏟
📲目录
一、为什么要学习框架?
🏕1、学习框架相当于从小作坊到工厂的升级,小作坊什么都要自己做,工厂是组件式装配,特点就是简单高效。
🗻2、框架的优势很明显,特点就是简单,易用,高效,这也是很多公司目前都使用框架的原因。
二、什么是Spring?
三、Spring的创建和使用
🌠那么接下来,博主我通过创建maven项目的方式创建一个spring项目。
一、新建一个maven项目
1、首先打开idea,新建一个maven项目;
2、点击next,选择项目的名称和存储路径;
3、点击Finish,创建完成后目录结构应该是下面这个样子;
二、添加Spring框架支持
1、双击打开pom.xml文件;
2、添加的框架有 spring-context:spring 上下⽂,还有 spring-beans:管理对象的模块。
<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>
3、第一次添加的时候代码是红色的,还没有下载下来,我们可以找到右上角的maven,点击打开,然后点下面红色箭头指向的地方,下载框架支持。
4、下载完成后代码显示正常;
5、检查是否下载成功,找到Libraries这个目录,打开看是否有这两个对应的jar包;
上述步骤完成后,就可以开始下一步了;
三、存储Bean对象
1、在我们的java文件下新建一个普通的包com,在包com下面新建一个类"User",类名根据自己的喜好新建即可;
2、在类App中写上以下代码;
package com;
/**
* 启动类
*/
public class User {
public void sayHi(String name){
System.out.println("hello- "+name);
}
}
3、将Bean注册到容器
配置文件spring-config.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">
</beans>
4、将bean通过配置文件注册到spring中
在上述"spring-config.xml"文件中添加一下代码即可;
<bean id="user" class="com.User"></bean>
注意这里的id是自己类名首字母小写之后的名字,class是类名所在的路径,刚才我们把Uesr类新建在com包下,所以这里给的是 class="com.User" ;即类名使用大驼峰,那么id就是类名的小驼峰,即类名为"User",那么id就是"user"。
四、将对象从spring中读取出来
1、首先我们需要得到spring上下文对象,在java文件下新建一个类“App”,这个类用来写读取对象的代码;
2、得到spring上下文对象;
方法1:使用ApplicationContext;
ApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
方法二、使用BeanFactory;
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
注意后面括号里面的名字一定要和我们配置的spring文件一致;
经典面试题:ApplicationContext和BeanFactory的区别是什么?
相同点:都可以从IoC容器当中获取bean。
不同点 :从继承关系和功能方面:ApplicationContext继承于BeanFactory。BeanFactory只提供了最基础的访问bean的方法,而ApplicationContext除了拥有BeanFactory以外,还拥有一些其他的机制,例如:支持国际化,资源访问,事件传播等;
从性能方面: ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量(ApplicationContext采用的是"饿加载"的方式来进行加载的。而BeanFactory采用的是"懒加载"的方式来进行加载的。)
3、获取指定的Bean对象,根据上下文提供的getBean方法
方法一:
User user = (User)context.getBean("user");
4、使用Bean对象
user.sayHi("ApplicationContext");
5、运行结果
那么获取指定的Bean对象有很多种方法,刚才写的这一种我们发现需要强制类型转换,那么如何传递一个null值的话就会出现问题,idea就会报错,如何解决呢?
这里我们可以使用第二种方法来获取Bean对象;
User user = context.getBean(User.class);
我们可以直接传递User.class;
但是这种方法的话,当同一个类型被注入到spring当中多次的时候,就会出现问题;
报错信息提示,匹配到了两个user;
那有没有其他的解决方案呢?
我们根据bean name 和类型来获取bean;
User user2 = context.getBean("user",User.class);
user3.sayHi("根据bean的id和bean的类型获取bean");
运行结果:
🌄OK,今天的内容就到这里啦,我们刚开始先对spring有个初步的认识,后续持续渐进的进行学习,欢迎阅读,感谢订阅!📬📬