目录
前言
一、ApplicationContext 和 BeanFactory 的区别
二、主要工作流程
三、开发步骤
3.1、创建Maven项目
3.2、创建Spring的核心配置文件
3.3、创建程序入口类
3.4、跟Spring打声招呼吧~
小结
有两大顶级接口可以获取Spring对象,他们分别是 ApplicationContext 和 BeanFactory,而我们日常开发主要使用的是 ApplicationContext。
相同点:
1.都可以得到Spring对象(Spring上下文)。
2.都是来自Spring的顶级接口。
不同点:
1.继承关系:ApplicationContext 属于 BcanFactory 的子类。
2.功能:BcanFactory只有最基础访问Bean的能力,而ApplicationContext 除了拥有 BeanFactory功能之外,还包含了更多功能,如:国际化支持、资源访问、时间传播等。
3.性能:ApplicationContext 加载方式是将 Bean 对象一次性加载,所以在访问 Bean 对象时会很快(饿汉模式,但也不完全是,现在的高版本会根据你电脑的情况智能的去加载,如果刚开始加载时系统资源比较紧张,就会放到后面加载);BeanFactory 只有需要在需要某个 Bean 时,才会加载 Bean 对象, 所以它在执行 Bean 获取时,比较慢(懒汉模式)。

首先需要在pom.xml配置文件中引入相关依赖,引入完后记得刷新Maven~
4.0.0 org.example spring-demo2 1.0-SNAPSHOT 8 8 org.springframework spring-context 5.2.3.RELEASE org.springframework spring-beans 5.2.3.RELEASE
在src/main/resources下创建一个xml文件用来声明加载Bean对象;
base-package是用来扫描指定包下的Spring注解,找到对应的Bean对象,加载到Spring中;
Ps:
类注解 :放在类上,将对象存储到Spring中的五大注解,他们的功能相同,只是用来标识功能的,方便程序员辨别;
@Controller:控制器
@Service:服务
@Repository:仓库
@Component:组件
@Configuration:配置
方法注解
@Bean:放在方法上,将当前修饰方法的返回的对象存储到Spring中;
有了这个程序入口类,我们就可以获取Spring对象了,同时,获取Spring时需要给一个参数,这个参数就像是创建Spring容器的一个指导书(声明加载Bean对象的xml文件),这个 指导书就会告诉Spring需要将哪些Bean对象注入到容器(这里其实还有很多方式,但那些方式比较low,这里我们只需要掌握:扫描对应包下注解的方式);
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//获取Spring对象(Spring上下文)ApplicationContext context =new ClassPathXmlApplicationContext("spring-config.xml");}
}
我们可以在扫描的包下创建一个Bean对象,通过上面步骤获取了Spring对象之后,就可以通过getBean方法获取Bean对象啦~
import com.demo.component.ArticleController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//获取Spring对象(Spring上下文)ApplicationContext context =new ClassPathXmlApplicationContext("spring-config.xml");//获取Bean对象,这里第一个参数是Spring自己生成的身份标识,默认是类名(第一个首字母小写)ArticleController articleController =context.getBean("articleController", ArticleController.class);//使用Bean对象System.out.println(articleController.sayHello());}
}
你好,Spring!

你学费了吗?
