一文了解Spring框架

目录

SpringBoot VS Servlet

Spring是什么? 

loC:控制反转

DI

创建一个Spring项目

创建一个Spring IOC容器 

注册Bean对象 

获取Bean对象 

注意事项: 

类注解 

为什么有这么多类注解?

注册与注入 

方法注解 @Bean


SpringBoot VS Servlet

当我们用Servlet开发一个项目时步骤是:

  1. 创建Maven项目
  2. 配置pom.xml(添加需要的依赖包、添加webapp/WEB-INF/web.xml文件及内容)
  3. 添加Servlet代码:@WebServlet注解+重写doXXX方法
  4. 配置Tomcat:添加Tomcat
  5. 部署项目:破解版需要自己手动设置

当我们用框架开发一个项目时:

  1. 创建maven项目
  2. 修改pom.xml:添加ee框架的依赖包(ee框架搭建项目还可以创建一个Spring Initializer的项目,或者在Sring官网下载一个项目模板)
  3. 准备spring约定的文件

Spring是什么? 

Spring框架即Spring Framework,它是一个开源框架,支持广泛的应用场景。用一句话概括就是:Spring是包含了众多方法的loC(控制反转)容器。那什么是loC呢?

loC:控制反转

实例化对象及组织对象间的依赖关系,都交给loC容器来进行管理,控制权由程序自己控制,转变为loC容器控制,控制权发生反转,所以叫loC容器。

DI

说到 IoC 不得不提的一个词就是 “DI” DI Dependency Injection 的缩写,翻译成中文是 依赖注入 的意思。
所谓依赖注入,就是由 IoC 容器在运行期间,动态地将某种依赖关系注入到对象之中。所以,依赖注入(DI )和控制反转( IoC )是从不同的角度的描述的同一件事情,就是指通过引入 IoC 容器,利用依赖关系注入的方式,实现对象之间的解耦。
解耦:自己写代码来创建对象及组织依赖关系,属于强耦合的(就是一个地方改,依赖这个地方的其他地方都得改),使用框架后,框架自动给我们组织依赖关系,解耦。
loC与DI :loC是一个目标也是一种思想,而DI是这个目标的具体实现

创建一个Spring项目

我用的是Maven的方式创建一个Spring项目,可以分为以下三步:

  1. 创建一个普通的Maven项目
  2. 添加Spring框架支持(Spring-context、Spring-beans)
  3. 添加启动类

创建一个Spring IOC容器 

ApplicationContext context=new AnnotationConfigApplicationContext("org.example");

ApplicationContext就是Spring容器的顶级接口

AnnotationConfigApplicationContext是其中一个实现类,它的作用是

  1. 扫描指定的包路径下,使用Spring框架注解的类(在上面代码扫描的是org.example)
  2. 注册这些类到容器中(框架帮我们new对象,及注入对象的依赖关系) 

注册Bean对象 

@Controller
//@Service
//@Repository
//@Component
public class Bean对象1 {
    public void sayHello(){
        System.out.println("Hello");
    }
}

@Controller
//@Service
//@Repository
//@Component

以上四个类注解都是用于注册Bean对象

获取Bean对象 

获取bean对象的方式有两种

(1)通过Bean的类型

(1)通过Bean的类型获取
        Bean对象1 b1=context.getBean(Bean对象1.class);

(2)通过Bean的id

 (2)通过Bean的id
        Bean对象1 b1_1=(Bean对象1) context.getBean("bean对象1");

注意事项: 

  • 一定要被扫描到,才能注册到容器中(一定要在指定的包路径下,指定类注解)
  • 默认注册到容器中的bean id,是类名首字母小写,如果类名开始两个连续字母大写,bean id就是类名
  • @Controller
    @Service
    @Repository
    @Component

这四个注册Bean对象的类注解默认都是单例的方式注册,注册为普通的java bean对象,还有一个@Configuration注册为配置类对象

类注解 

想要将对象存储在Spring中,有两种注解类型可以实现:

类注解:@Controller(控制器存储)、@Service(服务存储)、@Repository(仓库存储)、@Component(组件存储)、@Configuration(配置存储)

方法注解:@Bean

为什么有这么多类注解?

这么多类注解,就是让程序员看到类注解之后,就能直接了解当前类的用途。

程序的工程分层,调用流程如下:

@Component:一般组件使用,除了以上明确含义的类注解作用,之前的作用,就可以使用AComponent注解。 

注册与注入 

注册bean对象:按框架约定的写法(目前是几个类注解),框架给我们new对象。

注入依赖关系:按框架约定的写法(属性注解),框架给我们组织依赖关系(把容器中的对象赋值给属性)

方法注解 @Bean

类注解是添加到某个类上的,而方法注解是放到某个方法上的。

@Configuration
public class AppConfig {

    @Bean
    public Bean对象1 test_1(){
        Bean对象1 bean对象1=new Bean对象1();
        bean对象1.sayHello();
        return bean对象1;
    }

}

注意点:

  1. 只有类被扫描到,且注册到容器中,方法上的@Bean注解才生效
  2. @Bean注解的方法,所在的类,需要五种类注解之一(一般是在@Configuration配置类中)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值