1.创建spring项目

在这里插入图片描述
在这里插入图片描述

2.添加spring配置文件

创建一个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>

3.创建、获取、使用bean对象

在这里插入图片描述
3.1 创建bean对象

public class User {
    public void hello(String name){
        System.out.println("你好"+name);

    }

}

3.2 将bean对象添加进spring-config中

<?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">
    <!--将一个bean对象储存到spring中,id可自定义,class=类名-->
    <bean id="user" class="User"> </bean>
</beans>

3.3 获取并使用 Bean 对象(2种方法)

  • ApplicationContext
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 - 启动类
 */
public class App {
    public static void main(String[] args) {
        //1.得到上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2.从spring中得到bean对象\并没有new对象\context.getBean("user")里面的字符串与spring-config.xml中要选择的bean标签里的id一致
        User user= (User) context.getBean("user");
        //3.使用bean对象
        user.hello("世界");
    }
}
  • BeanFactory
public class App2 {
    public static void main(String[] args) {
        //1.得到上下文对象
        BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        //2.从spring中得到bean对象\并没有new对象\beanFactory.getBean("user")里面的字符串与spring-config.xml中要选择的bean标签里的id一致
        User user= (User) beanFactory.getBean("user");
        //3.使用bean对象
        user.hello("世界");
    }
}

二者执行的结果都为:
在这里插入图片描述

4. ApplicationContext VS BeanFactory

  1. 都是Spring 容器的接⼝
  2. ApplicationContext 是 BeanFactory 的⼦类
  3. ApplicationContext 除了继承了 BeanFactory 的所有功能之外,还拥有其他的功能。
  4. ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象(去得到上下文的时候便会加载初始化)
  5. BeanFactory是需要那个才去加载那个(从spring中得到bean对象时才去加载)

相关演示:
创建两个bean对象

public class User {
    public  User(){
        System.out.println("加载了user");
    }
    public void hello(String name){
        System.out.println("你好"+name);
    }
}
public class User2 {
    public  User2(){
        System.out.println("加载了user2");
    }
    public void hello(String name){
        System.out.println("你好2"+name);
    }
}

将这两个bean对象都添加都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">
    <!--将一个bean对象储存到spring中-->
    <bean id="user" class="User"> </bean>
    <bean id="user2" class="User2"> </bean>
</beans>
  • 用ApplicationContext 获取bean对象

在这里插入图片描述
结论:⼀次性加载并初始化所有的 Bean 对象

  • 用BeanFactory获取bean对象
    在这里插入图片描述
    发现 并未加载任何对象
    在这里插入图片描述
    当去得到某个对象时,才会加载这个对象,并且只会加载指定的某个对象

5. getBean ()的用法

public class User {
    
}
<bean id="user" class="User"> </bean>
  1. 名称id (需要强转类型)

上方则均使用此方法

User user= (User) context.getBean("user");
  1. 类型class获取 Bean
User user= context.getBean(User.class);
  1. 名称id + 类型class获取 Bean
User user= context.getBean("user",User.class);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐