《Spring Boot实战》学习笔记——第一章:Spring基础(1)

本文深入讲解Spring框架的基础概念,包括依赖注入、IoC容器、配置元数据、AOP及其实现方式。通过实例演示如何使用Java配置替代XML配置,以及如何通过注解实现Bean的声明和注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Spring概述

1.概述

    Spring使用简单的POJO(无任何限制的普通Java对象,pojo实质上可以理解为简单的实体类)来进行企业级开发。每一个被Spring管理的Java对象都称之为Bean;而Spring提供了一个IoC容器用来初始化对象,解决对象间的依赖管理和对象的使用。

2.依赖注入

    控制翻转和依赖注入在Spring环境下是等同的概念,控制翻转是通过依赖注入实现的。依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。

    Spring IoC容器负责创建Bean,并通过容器将功能类Bean注入到你需要的Bean中。

    无论是xml配置,注解配置还是java配置,都称为配置元数据,即描述数据的数据。元数据本身不具备任何可执行能力,只能通过外界代码来对这些元数据解析后执行一些有意义的操作。Spring容器解析这些配置元数据进行Bean初始化,配置和管理依赖。

    声明Bean的注解:@Component,@Service,@Repository,@Controller

    注入Bean的注解,一般情况下通用:@Autowired:Spring提供的注解;@Inject:JSR-330提供;@Resource:JSR-250提供

    基于注解的Bean的初始化和依赖注入,Spring容器类选用AnnotationConfigApplicationContext。

3.java配置

    java配置是通过@Configuration和@Bean来实现的。

    @Configuration声明当前类是一个配置类,相当于一个Spring配置的xml文件。

    @Bean注解在方法上,声明当前方法的返回值为一个Bean。

    @ComponentScan:自动扫描包名下所有使用@Component,@Service,@Repository,@Controller

    java配置方式(不使用@Component,@Service,@Repository,@Controller)

@Configuration
public class JavaConfig {
    
    @Bean
    public FunctionService functionService(){
        return new FunctionService();
    }
    
    @Bean
    public UserFunctionService userFunctionService(){
        UserFunctionService userFunctionService = new UserFunctionService();
        userFunctionService.setFunctionService(functionService());//1
        return userFunctionService;
    }
    
    @Bean
    public UserFunctionService userFunctionService(FunctionService functionService){
        UserFunctionService userFunctionService = new UserFunctionService();
        userFunctionService.setFunctionService(functionService);//2
        return userFunctionService;
    }
}

    代码解释:注入Function的Bean时候推荐直接调用functionService()。 另一种方式,直接将FunctionService作为参数给userFunctionService()。在Spring容器中,只要容器中存在某个Bean,就可以在另外一个Bean的声明方法的参数中写入。

3.AOP

    Spring的AOP存在目的是为了解耦。

    Spirng支持AspectJ的注解式切面编程。

  • 使用@AspectJ声明是一个切面。
  • 使用@After,@Before,@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
  • @After,@Before,@Around参数的拦截规则为切点(PointCut),可使用@PointCut专门定义拦截规则,然后在@After,@Before,@Around的参数中调用。
  • 其中符合条件的每一个被拦截处为连接点(JoinPoint)。

    使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值