JavaEE进阶第二课:Spring创建与使用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

上一篇我们介绍了Spring的概念知道了Spring是众多工具方法的IoC容器
但是纸上谈兵终觉浅这一篇文章就来介绍Spring创建与使用
== 注之后我们对对象的称呼就叫Bean==

1.1Spring项目的创建与配置

1.创建maven项目语言选java项目类型选择mavenjdk推荐1.8及以上一路next即可
在这里插入图片描述
2.在pom.xml目录下导入以下依赖并刷新下载

		<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>

注标签要在标签下才正确

添加的框架有
spring-contextspring 上下文
spring-beans管理对象的模块

3.在resources目录下创建任意名称最好是有意义name的xml文件并导入依赖记得刷新下载依赖。
在这里插入图片描述
复制以下内容到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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">                                                                                         
</beans>

1.2将对象注册到Spring中

1.任意创建两个类一个类App负责执行main函数另一个User注册到Spring中

public class User {
    public void fun(){
        System.out.println("我是User类的fun方法");
    }
}

public class App {
    public static void main(String[] args) {
        
    }
}

2.将User对象注册到Spring中
在我们resources目录下的xml文件的标签下中加上这一句

<bean id="user" class="User"></bean>
这样就注册了一个User对象到Spring中了

● 针对class属性我们可能会遇到不同包下相同的类名这时我们就要唯一定位到某一个类可以采用包名.类名的形式
● 这里这是注册还没有真正将对象存入就相当于清单Spring存对象是要根据这个清单内容来存对象。

3.从Spring取出User对象
在App的main方法中调用以下代码

public static void main(String[] args) {
        //获取Spring上下文对象 ClassPathXml:根据xml的路径 所以参数为我们resources内的xml文件
        ApplicationContext context=
                new ClassPathXmlApplicationContext("spring-config.xml");
        //使用该类获取对象的方法--输入对象id 返回的Object需要强转
        User user=(User) context.getBean("user");
        //检查是否正确获得对象
        user.fun();
}

当然获取对象不只是输入id还可以通过类对象来获取。

User user=(User) context.getBean("user");

通过类对象有个好处不用再强制类型转换了。
缺点就是如果我再给xml加入有个User对象就会报错就像这样
● 在xml再添加一个User对象
<bean id="user1" class="User"></bean>
● 执行代码
User user1=context.getBean(User.class);
user1.fun();
● 得到报错
在这里插入图片描述
注意看异常名称NoUniqueBeanDefinitionException没有找到唯一的对象
解决方法很简单既然二者都有缺点那我们就全都要
User user2=context.getBean("user1",User.class);
该方法就结合的二者优点推荐使用哦

4.运行检查结果
正确
在这里插入图片描述
一般错误就是报以下异常

NoSuchBeanDefinitionException

这时就要注意自己getBean方法的id是否和xml里面的匹配大概率是这个问题引发的异常。

1.3补充说明

创建Spring上下文对象时除了 ApplicationContext 之外我们还可以使⽤ BeanFactory 来作为 Spring 的上下文。

		BeanFactory beanFactory=
                new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        User user=(User) beanFactory.getBean("user");
        user.fun();

他们两个的效果是一样的ApplicationContext属于 BeanFactory的子类
这里对此有个常考面试题

1.3.1常考面试题

ApplicationContext VS BeanFactory常⻅⾯试题
● 继承关系和功能⽅⾯来说Spring 容器有两个顶级的接⼝BeanFactory 和
ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能力⽽ ApplicationContext属于 BeanFactory 的⼦类它除了继承了 BeanFactory 的所有功能之外它还拥有独特的特性还添加了对国际化支持、资源访问支持、以及事件传播等⽅⾯的支持
● 从性能⽅⾯来说ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象饿汉
而BeanFactory 是需要那个才去加载那个懒汉因此更加轻量

总结

1.先得到容器
2.对象存入容器
创建Bean类普通类
然后在xml上进行注册等待Spring存入容器
3.从容器取出对象
得到 Spring 上下⽂读取到 Spring 的配置文件(xml)
getBean方法获取对象
4.使用对象
调用对象的方法等等

本篇文章介绍了Spring项目创建配置和如何存储对象下一篇文章我将向大家讲述如何更加快速高效的存取对象希望大家多多点赞关注

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: SpringJava