网站首页 > java教程 正文
1.创建 Spring 项目
??这里创建项目的环境:IDEA 2021.3.1(2021.X版本创建过程应该是相同的,如果是2022及以上IDEA其页面可能不同)、jdk1.8、spring-context 5.x。
1.1 创建一个Maven项目
??打开IDEA、新建项目:
??注意这里选jdk1.8版本的,没有jdk1.8可以下载: Download JDK。
??然后next。
??之后Finish。加载成功后如下:
1.2 添加 Spring 依赖
??由于依赖或资源加载时候是从国外服务器下载的,速度很慢,所以可以配置一下国内源。
1.2.1 配置国内源
??可能有的读者在如下路径没有settings.xml文件,这是第一种情况。第二种情况是默认存在,但是我们需要修改里面的内容。
① 对于第一种情况:先在C:\Users\这里是你的用户名\.m2\下创建一个名为settings.xml的文件,将下面的代码全部复制进去。
② 对于第二种情况:现在是C:\Users\这里是你的用户名\.m2\下默认有一个settings.xml文件,现在打开这个文件。(可以用记事本,但更推荐VSCode)
??找到 <mirrors>
??将下面代码复制进去(上面图片我已经复制了):
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
复制代码
??注意!我们还需要再一次设置,上面是全局的设置,下面的是当前项目的设置。
最后点ok就行了。
1.2.2 添加 Spring 框架?持
??在项?的 pom.xml 中添加 Spring 框架的支持,xml 配置如下(注意这里的版本必须是5.X版本的,可以去Maven Repository: Search/Browse/Explore (mvnrepository.com)网站,搜索context):
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>
复制代码
??再点击右边的Maven,点刷新,等待加载依赖完成,出现了Dependencies就加载成功了。
1.2.2 添加启动类
??在src\main\java下右键创建一个类。
2.存储 Bean 对象
2.1 创建 Bean 对象
Spring是什么?IoC是什么?DI又是什么? - 掘金 (juejin.cn)
??在Java中,Bean是指一种Java类,它有一些属性和方法,并且符合一定的命名规范,能够被复用和组合。也可以这么理解:在Java中一个对象如果被使用多次,就可以称为 Bean。
??Spring 可以存取对象,怎么存呢?我们先创建一个Bean对象:
??创建完成后,我们还需要配置一下环境才能把Bean对象存入容器中。
2.2 将 Bean 存到容器中
??在resources下创建一个配置文件,可以随便起名,但是最好要望文生义,这里取名为 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>
复制代码
??下面的内容很重要!要想把Student存入Spring容器中,我们需要在 spring-config.xml 配置文件中添加如下形式的标签:
<beans>
<bean id = "" class = "" >
</beans>
复制代码
??其中id标识这个类在容器中的名字,以后我们取它的时候就需要这个名字。class表示这个类的路径,注意这个路径是从java下开始。比如:我现在创建几个包,然后将Student放入。
??那么这时候的class就为com.spring.demo1.Student。
3.获取、使用 Bean 对象
3.1 创建 Spring 上下文
??在经过了繁杂的配置后,我们终于到了这里,现在开始就可以敲代码了。我们已经将Student注册到Spring容器中了,那我们如何将对象取出来用呢?要想取出来,我们得先有一个上下文,可以理解为就是一个Spring。
??这里创建上下文有两种方法:
① 第一种 用ApplicationContext:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
}
}
复制代码
② 第二种 用BeanFactory:
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class AppTest {
public static void main(String[] args) {
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
}
}
复制代码
??这里要注意的是 "spring-config.xml" 这里面必须是刚才的配置文件的名字!这里是从spring-config.xml中读取有哪些类要存到Spring中。
3.2 获取指定的 Bean 对象
???获取Bean对象有三种方式:
public class AppTest {
public static void main(String[] args) {
//创建一个 Spring
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
//第一种:形参为id,用 id 获取对象,取出 Student
//但是这种方式必须要进行强制类型转换,因为这种getBean方法 的返回类型是 Object。
Student student = (Student) context.getBean("student");
student.Hi();
//第二种:形参为 class 类型,用类型获取对象,这种形式不需要进行强制类型转换。
Student student1 = context.getBean(Student.class);
student1.Hi();
//第三种:形参为 id + class 类型,这是最推荐的写法。
Student student2 = context.getBean("student",Student.class);
student2.Hi();
}
}
复制代码
结果:
??当spring-config.xml有相同id时,第一行代码就会报错,Spring创建失败;对于第二种方式,当spring-config.xml里有多个相同类型的类的时候会报错;
3.3 ApplicationContext 与 BeanFactory 的区别
??为了更清楚地描述它们的区别,我们这里多创建几个Bean类,并为每个类写一个构造方法,并把它们存入到Spring中:
① 对于ApplicationContext:
public class AppTest {
public static void main(String[] args) {
//创建一个 Spring
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
Student student = (Student) context.getBean("student",Student.class);
student.Hi();
}
}
复制代码
结果:
② 对于BeanFactory:
public class AppTest {
public static void main(String[] args) {
//创建一个 Spring
BeanFactory context = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
Student student = (Student) context.getBean("student",Student.class);
student.Hi();
}
}
复制代码
??可以看出来BeanFactory 在应用启动时并不会初始化所有的 Bean,而是在第一次请求时才会初始化。而 ApplicationContext 在启动时就会初始化所有的 Bean。这是它们的最主要的区别。
??其它区别(了解):ApplicationContext接口继承了BeanFactory接口,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化?持、资源访问?持、以及事件传播等??的?持。
??当然,存取 Bean 的方式方法还有更简单更常用的,上面的只是给大家介绍一下 Spring 的基本操作。(更简单更常用的方法马上更新,建议关注一波)
作者:会飞的喵喵
链接:https://juejin.cn/post/7223668409506152509
猜你喜欢
- 2024-12-20 牛逼!竟然把VSCode玩成了IDEA的效果,有点哇塞
- 2024-12-20 用Java轻松搭建你的数据库!从零开始的实用指南
- 2024-12-20 IntelliJ IDEA教程之Andriod项目开发篇:制作程序互动性(一)
- 2024-12-20 IntelliJ IDEA这样设置,用起来不仅顺手而且特爽
- 2024-12-20 IDEA下载及安装教程(24年7月更新)
- 2024-12-20 IDEA中JavaFx TableView 的使用 idea javafx scene builder
- 2024-12-20 你想免费使用IDEA开发Java吗?跟我一起申请官方激活码
- 2024-12-20 IDEA+Mybatis-generator代码生成工具
- 2024-12-20 Java idea设置默认jdk版本 idea怎么设置java版本
- 2024-12-20 又整新活,新版 IntelliJ IDEA 2024.1 有点东西!
你 发表评论:
欢迎- 04-27微服务部署架构设计详解(图文全面总结)
- 04-27Java微服务架构选型与对比:一场技术流派的巅峰对决
- 04-27微服务架构下Java的最佳实践
- 04-27Java微服务架构选型:优雅拆分与高效整合
- 04-27微服务架构下的Java代码拆分策略:像拼图一样构建系统
- 04-27微服务架构下的Java最佳实践
- 04-27微服务架构下Java的挑战与机遇
- 04-27微服务架构下Java事务管理的艺术
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)