SpringDay2

一.ioc常用注解

Spring 注解实现 IOC(Inversion of Control,控制反转)是通过使用一系列的注解来告诉 Spring 框架如何创建、管理和注入对象。下面详细介绍几个常用的注解及其作用:

  1. @Component: @Component 是一个通用的注解,用于标记一个类为 Spring 组件。被标记为 @Component 的类将会被自动扫描并注册到 Spring 容器中,成为一个可由 Spring 管理的 Bean。

  2. @Autowired: @Autowired 用于自动注入依赖对象。通过在需要依赖注入的字段、构造方法或 setter 方法上添加 @Autowired 注解,Spring 将会自动扫描容器中匹配类型的 Bean,并将其注入到对应的位置上。

  3. @Qualifier: 当存在多个类型相同的 Bean 时,可以结合 @Autowired 注解一起使用,通过指定具体的 Bean 名称或限定符来确定要注入的实例。

  4. @Value: @Value 注解用于注入简单类型的值或者表达式的结果。可以将配置文件中的属性值注入到类的成员变量中。

  5. @Primary: 当存在多个相同类型的 Bean 时,可以使用 @Primary 注解来指定默认的首选 Bean。

  6. @Configuration: 使用 @Configuration 注解将一个类标记为配置类,其中定义了一些 Bean 的创建和配置方法。

  7. @Bean: 在配置类中使用 @Bean 注解来声明一个 Bean 对象,Spring 容器会根据该方法的返回值来创建对应的 Bean 实例。

  8. @ComponentScan: @ComponentScan 用于指定需要进行组件扫描的基础包路径。通过在配置类上添加 @ComponentScan 注解,Spring 将会自动扫描指定包及其子包下所有被 @Component 或相关注解标记的类,并注册为 Bean。

  9. @Scope: @Scope 用于指定 Bean 的作用域,默认为单例模式(Singleton)。可以将作用域设置为原型模式(Prototype)、会话模式(Session)、请求模式(Request)等。

  10. @PostConstruct@PreDestroy: @PostConstruct@PreDestroy 分别用于在 Bean 初始化完成后和销毁前执行特定的方法。这些方法可以用于执行一些初始化操作或资源清理等工作。

以上是常用的 Spring 注解,通过合理地使用这些注解,可以简化配置文件的编写,提高开发效率,并且便于理解和维护代码。需要注意的是,在使用注解时,要确保配置了适当的组件扫描和正确的注解使用方式,以保证 Spring 能够正确识别和处理注解。

二. 实现Spring ioc

实现 Spring IOC(Inversion of Control,控制反转)的注解方式,需要按照以下步骤进行详细操作:

  1. 添加依赖: 在项目的构建管理文件中如 Maven 的 pom.xml ,添加 Spring 相关的依赖,包括 Spring Core、Spring Context 等核心模块。

  2. 创建组件类: 创建需要被 Spring 托管的组件类,并使用适当的注解进行标注。常用的注解包括 @Component@Service@Repository 等。例如:

    @Component public class MyComponent { // ... }

  3.  在 Spring 配置文件 XML 配置文件中,启用组件扫描,以使 Spring 能够自动发现和注册带有注解的组件

    XML 配置方式:
    <context:component-scan base-package="com.example" />
  4. @Repository标识持久层组件
    1. @Repository 注解是 Spring 框架提供的一种注解,用于标记一个类为数据访问层(DAO)组件。它是 @Component 注解的特殊化,用于表示该类主要负责与数据库或其他持久化存储进行数据交互和访问的角色。                        
    2. 实例:

      package com.mapper;
      
      import org.springframework.stereotype.Repository;
      
      @Repository("userMapper")//括号里的相当于id名字如果不给就是类名名字 首字母小写
      public class SmsUserMapperImpl implements SmsUserMapper{
          @Override
          public int insert(){
              System.out.println("执行了新增方法");
              return 0;
          }
      }
  5. @Service标识服务层组件

    1. @Service 注解通常与其他 Spring 注解一起使用,如 @Autowired 用于自动注入依赖、@Qualifier 用于指定注入的具体实例等。使用 @Service 注解的好处是简化了配置文件的编写,提高了代码的可读性和维护性。

    2. 示例:

      package com.service;
      
      import com.mapper.SmsUserMapperImpl;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      @Service("userService")//括号里的相当于id名字如果不给就是类名名字 首字母小写
      
      public class UserServiceImpl implements UserService{
          /**
           * 重复的new对象 构造注入 就是解决 Service 和dao 的问题
           */
          @Autowired //自动装配 构造 get set p命令注入
           public SmsUserMapperImpl userMapper;
      
           @Override
          public int insert(){
               return userMapper.insert();
           }
      }
      
  6. 运行 Spring 容器: 在应用程序入口处,通过配置文件或注解方式创建 Spring 容器,并从容器中获取需要的组件。例如:

    • 编写测试类

      @Test
          public void testService(){ 
        ApplicationContext context=newClassPathXmlApplicationContext("applicationContext.xml");
              UserService userService=(UserService)context.getBean("userService");
              userService.insert();
          }
      }

      2.运行结果

通过以上详细步骤,就可以使用注解方式实现 Spring IOC,即由 Spring 容器负责创建、管理和注入对象,实现了控制反转和依赖注入的功能。在进行注解配置时,还可以结合其他注解(如 @Qualifier@Value 等)来进一步细化配置和处理特定的情况。确保配置了适当的组件扫描和正确的注解使用方式,以使 Spring 能够正确识别和处理注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值