SSM详解2:Spring的创建和使用

1、创建Spring项目

我们上一章讲过了,Spring的核心用法就是取出和存入对象,如果不知道的可以看我上期博客。

(255条消息) Java框架详解1——Spring的设计思想_东莞呵呵的博客-CSDN博客

 1.1、首先我们需要在idea中创建一个Maven项目,不需要选中任何模板

 

 1.2、添加spring框架支持(spring-context/spring-beans)

在pom.xml 文件中添加Spring框架依赖

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

1.3、添加一个启动项

在创建好的项目中的Java目录下创建一个启动项(包含main方法即可)

2、存入Bean对象

1、创建一个Bean对象

2、将Bean注册到容器中

2.1、创建一个Bean

Bean就是Java中的普通的对象

我们直接创建在Java目录下即可

2.2、将Bean注册到容器

我们首先要在resource目录下创建一个xml配置文件,我们习惯性命名为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>

然后我们把创建好的Bean对象注册进去,在<beans></beans>标签中添加如下代码

<bean id="userBean" class="com.beans.UserBean"></bean>

一般id我们使用bean的类名的小驼峰形式,class=Java包下该bean的路径。

3、取出Bean

1、获取Spring的上下文对象

2、通过Spring的上下文对象,将bean从容器中取出来

3.1、 获取spring的上下文对象

3.1.1、通过ApplicationContext获取上下文对象

注意参数要与resources中的注册bean的配置文件名相同

ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

3.1.2、根据上下文对象取出bean

getbean中传入的参数是注册时id的名称

UserBean user=(UserBean) context.getBean("userBean");

3.2、通过bean工厂的方式获取上下文对象

3.2.1、获取bean工厂

值得注意的是XmlBeanFactory是一个即将废弃的方法

BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

3.2.2、取出bean对象

UserBean user = (UserBean) factory.getBean("userBean");

3.3、两者的区别(重要)

1、相同点:都可以从容器中通过getBean方法取出bean

2、不同点:

        从设计来说:ApplicationContext是BeanFactory的子类,BeanFactory只提供了基础访问Bean的方法ApplicationContext除了有BeanFactory所有的方法,还提供了更多的实现,比如对国际化的支持,资源访问的支持,以及事件和传播等方面的支持

        从性能方面来说:BeanFactory是按需加载Bean,ApplicationContext是饿汉方式,会将所有的Bean全部加载起来,以备以后使用。

4、getBean方法详解

除了上述的使用方法,我们还可以使用以下方法:

UserController user = context.getBean(UserController.class);

UserController user = context.getBean("user", UserController.class);

但是前一种使用方式会在同一个bean注册多次的情况下报错。

总结:getBean有三种使用方式

1、根据Bean name(id)来获取,需要强转
2、根据bean type(context.class),来获取不需要强转,但是一个Bean对象被注册过多次的时候就会出错
3、根据bean name和type来获取不需要强转,而且更加健壮

猜你喜欢

转载自blog.csdn.net/dghehe/article/details/127333171