目录
通常所说的Spring是指Spring Framework(Spring框架),它是一个开源的框架,目前企业中开发JAVA项目,Spring框架几乎是标配,这个框架中包含了很多组件:Spring容器/IOC容器、SpringMVC、SpringAOP。Spring可以说是包含了众多工具方法的IOC容器
上面说到是一个IoC容器,其具备两个最基础的功能:将对象存储到容器中、从容器中取出对象。因此,在学习Spring时,主要就是学会如何将对象存储到Spring中,再从Spring中获取对象的过程。
对于Spring IoC容器来说,是管理Bean对象的容器.单纯从存放数据这个角度来看,Spring IoC容器与普通的集合框架一样,但使用Spring容器存放对象,对象不需要程序员手动去new,需要进行管理的对象,直接放入到容器中。
· Bean对象即普通的java实例对象
IoC即控制反转,是面向对象编程中的一种设计原则。对于Spring容器来说,IoC将实例化对象以及组织间的依赖关系,都转交给IoC容器来进行管理。控制权由程序员自己控制,转变为IoC容器控制,控制权发生反转,因此称为IoC容器。
使用IoC容器,按照框架约定的写法,就可以实现,框架统一管理Bean'对象的生命周期、Bean对象之间的依赖关系。
DI,即依赖注入,也就是由IoC容器在运行时动态的将某种依赖关系注入到对象之中。
依赖注入和控制反转其实是从不同的角度描述同一件事,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦.也可以说IoC是是思想,而DI是其具体的实现。

关于pom.xml文件的配置可以直接从我的gitee中复制:Spirng项目pom.xml文件的配置

- package org.example;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- @SpringBootApplication
- public class Application {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }

- package org.example;
-
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-
- public class APP {
- public static void main(String[] args) {
- //ApplicationContext是Spring容器的顶级接口
- //AnnotationConfigApplicationContext其中的一个实现类,作用是:
- //(1)扫描指定的包路径下,使用了Spring框架注解的类
- //(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
- ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
- }
- }
使用类注解的方式来注册Bean对象

- package org.example.model;
-
- import org.springframework.context.annotation.Configuration;
- import org.springframework.stereotype.Component;
- import org.springframework.stereotype.Controller;
- import org.springframework.stereotype.Repository;
- import org.springframework.stereotype.Service;
-
- //以下四个注解,都是类注解,用于注册Bean对象
- //注册的方式,默认是Bean ID(名称),是类名首字母小写
- @Controller
- //@Service
- //@Repository
- //@Component
- public class Bean {
- public void sayHello() {
- System.out.println("hello");
- }
- }
获取Bean对象有两种方式
①通过Bean的类型来获取
- // (1)通过bean的类型来获取
- Bean b1_1 = context.getBean(Bean.class);
- System.out.println(b1_1);
②通过Bean的id(名称)来获取
- //(2)通过bean的id(也叫bean的名称)
- Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
- System.out.println(b1_2);
使用Bean
上面已经获取到了bean对象,之后就可以直接使用
- //使用bean
- b1_1.sayHello();
- b1_2.sayHello();
完整代码
- package org.example;
-
- import org.example.model.Bean;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-
- public class APP {
- public static void main(String[] args) {
- //ApplicationContext是Spring容器的顶级接口
- //AnnotationConfigApplicationContext其中的一个实现类,作用是:
- //(1)扫描指定的包路径下,使用了Spring框架注解的类
- //(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
- ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
- //获取Bean对象有两种方式:
- // (1)通过bean的类型来获取
- Bean b1_1 = context.getBean(Bean.class);
- //(2)通过bean的id(也叫bean的名称)
- Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
- //使用bean
- b1_1.sayHello();
- b1_2.sayHello();
- }
- }
