Java直通车系列25【Spring Boot】(核心注解)

发布于:2025-03-13 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

@SpringBootApplication

@Component

@Autowired

@RequestMapping

@Configuration 和 @Bean


@SpringBootApplication

  • 解释:这是 Spring Boot 应用的核心注解,它是一个组合注解,包含了@Configuration@EnableAutoConfiguration@ComponentScan这三个注解的功能。@Configuration表明该类是一个配置类,@EnableAutoConfiguration开启自动配置功能,让 Spring Boot 根据类路径下的依赖和配置自动配置 Spring 应用,@ComponentScan用于扫描指定包及其子包下的组件并将其注册到 Spring 容器中。
  • 场景示例
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication注解在启动类MyApplication上,使得该应用具备了自动配置、组件扫描等功能,能够快速启动一个 Spring Boot 应用。

@Component

  • 解释:用于将一个普通的 Java 类标记为 Spring 容器中的组件,让 Spring 可以自动扫描并管理该类的实例。它是一个通用的组件注解,其他如@Service@Repository@Controller等注解本质上也是基于@Component的特殊化注解。
  • 场景示例
@Component
public class MyComponent {
    // 组件的业务逻辑方法
    public void doSomething() {
        System.out.println("执行MyComponent的doSomething方法");
    }
}

在这个例子中,MyComponent类被@Component注解标记,Spring 容器在启动时会扫描到这个类,并创建它的实例,以便在其他地方可以通过依赖注入来使用它。

@Autowired

  • 解释:用于实现自动装配,它可以对类的成员变量、方法参数等进行标注,让 Spring 容器在运行时自动注入对应的依赖对象。默认情况下,它是按照类型进行装配的,如果存在多个相同类型的 Bean,也可以结合@Qualifier注解按照名称进行装配。
  • 场景示例
@Service
public class MyService {
    @Autowired
    private MyRepository myRepository;

    // 业务逻辑方法,使用myRepository进行数据操作
    public void doService() {
        myRepository.saveData("测试数据");
    }
}

MyService类中,通过@Autowired注解自动注入了MyRepository类型的对象,这样在MyService的业务方法中就可以直接使用MyRepository来进行数据操作,而不需要手动创建和赋值MyRepository对象。

@RequestMapping

  • 解释:用于处理请求映射,它可以标注在类或方法上。标注在类上时,表示该类中的所有请求处理方法都有一个共同的请求路径前缀;标注在方法上时,指定了该方法所处理的具体请求路径和请求方法等信息。
  • 场景示例
@Controller
@RequestMapping("/users")
public class UserController {

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getUserById(@PathVariable("id") Long id, Model model) {
        // 根据id查询用户信息
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "userDetails";
    }
}

在上述代码中,@RequestMapping("/users")定义了UserController类中所有请求处理方法的路径前缀为/users,而@RequestMapping(value = "/{id}", method = RequestMethod.GET)表示getUserById方法处理以/users/{id}为路径的 GET 请求,其中{id}是一个路径变量,用于获取用户的 ID。

@Configuration 和 @Bean

  • 解释
    • @Configuration:用于标记一个类作为配置类,该类可以包含多个@Bean注解标注的方法,用于向 Spring 容器中注册 Bean。
    • @Bean:用于在配置类中定义一个 Bean,告诉 Spring 容器如何创建和管理这个 Bean 对象。
  • 场景示例
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // 创建并配置数据源
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
}

AppConfig配置类中,@Configuration注解表明这是一个配置类,@Bean注解的dataSource方法创建了一个DataSource类型的 Bean,并配置了数据库连接信息,Spring 容器在启动时会调用这个方法来创建DataSource对象并将其注册到容器中,供其他组件使用。


网站公告

今日签到

点亮在社区的每一天
去签到