Learning Spring

Spring中最主要的概念是DI(Dependcy Injection), IoC(Inversion of Control),AOP(Aspect Oriented Programming)。

IoC是通过DI实现的,DI是通过反射(Reflection)实现的,DI是技术实现,IoC是概念实现。Spring主要就是为了解耦对象间的依赖。

DI分开看,Dependcy:对象间的依赖,Injection:从Spring容器中选择一个对象A做为另一个对象B的组成部分(B中有一个private成员A)。

IoC中C:本来对象间的依赖是由程序在运行时让(控制)Java容器绑定的,但是Spring反过来了,Spring容器通过配置文件(XML或者Java配置类)去注入运行中的程序中对象间的依赖,所以说控制反转了(Inversion)。

Bean即表示Spring容器中一个实例对象,有单例模式:只有一个实例,或者每次都生产新的实例。Spring容器专门管理Beans的生产(Bean Factory),互相间关联连接(DI),销亡。

注解(Annotation)是Java语言的特性,并不是Spring特有,注解其实就是一个说明型的标签,主要用来让各种容器做判断的。

Java元数据(metadata)指描述数据的数据,比如bean的xml文件,java配置类。注解也是元数据。

装配即注入的意思,autowired自动装配,其实就两种:byname:根据配置文件中的bean的id查找,bytype:按照对象的类型查找。@Autowired使用bytype查找,当有多个或者多种同类型名实例时,可以配合@Qualifier(byname)来确定。

AOP说简单点就是将多个类中共同调用部分单独提取出来,做为一个切面实现,目的是解耦代码间的依赖。比如数据库事务操作(Transaction),web应用中的安全防火墙,对接收到的大部分(不是全部,所以是用注解可配置,不是框架性的全部配置)请求做过滤操作。如果学过Python,那么请参考装饰器。

Spring MVC属于Spring,专门用于开发Web application的Spring定制版。

Spring Boot基于Spring,更强大,却更简单,就像Windows和DOS之间的关系。主要提升:精化配置(不需要xml)、编码、部署(直接能打包成一个jar)、监控。

Spring Cloud基于Spring Boot,是一个包含一系列开发云服务的组件的体系。

-----------------------------------------------------------------------------------------------------------------------------

1. @Component @Configuration 区别:

参考https://blog.csdn.net/long476964/article/details/80626930

实例:

package org.zyd.java.spring.test.di.annotation.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class TextEditorConfig {

    @Bean
    public TextEditor textEditor() {
        return new TextEditor(spellChecker());
    }

    @Bean
    public SpellChecker spellChecker() {
        return new SpellChecker();
    }

}

这里spellChecker()会被spring容器执行两次,如果改成@Configuration,则只会执行一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值