📜  Spring 核心注解(1)

📅  最后修改于: 2023-12-03 15:35:03.852000             🧑  作者: Mango

Spring 核心注解

Spring 是一款流行的轻量级 Java 开发框架,通过使用 Spring 核心注解可以更加轻松地描述应用程序中的对象(也称为 Bean ),将这些对象彼此连接起来,并管理它们的生命周期。本文将介绍 Spring 核心注解的使用,并举例说明。

@Component

@Component 是一个通用的注解,标明标记 Java 类为可被 Spring 自动扫描到的组件。这里的组件通常是与业务相关联的实现了特定功能的 Java 类,可以通过将它们标记为 @Component 组件,Spring 就可以在应用程序启动时自动执行组件扫描,找到这些组件并让它们自动地成为 Spring 应用程序上下文中的 Bean,以便在需要时可以轻松地进行访问。

@Component
public class ExampleComponent {
    // ...
}
@Repository

@Repository 是用于标记 DAO 类的注解。它与@Component 注解的主要区别在于,它发出信号,告诉 Spring 帮助我们创建和管理 DAO 类的 Bean 对象。此外,它还提供了对数据访问异常进行转换的功能,将所有的 JdbcSQLException 转换为 Spring 抛出的 DataAccessException。

@Repository
public class ExampleRepository {
    // ...
}
@Service

@Service 注解是用于标记服务类的注解,表示该类是一个服务类,它将被自动添加到 Spring 应用程序上下文中,可以方便地使用依赖注入来处理它们的对象依赖关系。此外它是唯一一个在 Spring 中具有事务属性的注解。

@Service
public class ExampleService {
    // ...
}
@Controller

@Controller 注解是用于标记控制器组件的注解。它表示该类是控制器类,该类的方法被用于映射 HTTP 请求和返回响应。通过使用 @Controller 进行注解,Spring 作为 Web 框架将会自动将此类识别为为控制器,Spring MVC 就可以在执行这个类的方法时将其绑定到 HTTP 请求上下文中,然后将请求请求分配到正确的控制器方法上进行处理。

@Controller
public class ExampleController {
    // ...
}
@RequestMapping

@RequestMapping 注解是控制器方法最常用的注解,它是用来映射 HTTP 请求的。通过 @RequestMapping 注解,我们可以为控制器方法设置多个映射路径、定义 HTTP 请求方式和设置请求参数。例如:

@Controller
@RequestMapping("/examples")
public class ExampleController {

    // 映射 GET 请求到 /examples
    @RequestMapping(method = RequestMethod.GET)
    public String getAllExamples() {
        // ...
        return "examples";
    }

    // 映射 POST 请求到 /examples,设置请求参数 name 和 age
    @RequestMapping(value = "/create", method = RequestMethod.POST, params = {"name", "age"})
    public String createExample(@RequestParam("name") String name, @RequestParam("age") int age) {
        // ...
        return "create-example-success";
    }
}
@Autowired

@Autowired 注解是 Spring 中最常用的注入方式。通过使用 @Autowired 注解,我们可以将一个 Spring 应用程序上下文中的 Bean 注入到目标对象中。使用 @Autowired 来装配 Bean,可以更加方便地处理对象之间的依赖关系。

@Controller
public class ExampleController {

    @Autowired
    private ExampleService exampleService;

    // ...
}
@Configuration

@Configuration 是 Spring 中定义配置类的注解,它允许我们将 Spring 应用程序上下文中的 Bean 配置到一个或多个配置类中,以便 Spring 能够了解哪些 Bean 应该在哪些类中创建。这个注解可以与 @Bean 和 @Profile 注解一起使用,可以非常方便地管理应用程序的 Spring 配置。

@Configuration
public class ExampleConfiguration {

    @Bean
    public ExampleRepository exampleRepository() {
        // ...
    }

    @Bean
    public ExampleService exampleService() {
        return new ExampleService(exampleRepository());
    } 
}
@Bean

@Bean 注解是 Spring 中最常用的注入 Bean 的方式之一。它可以用于将特定的 Java 对象定义为 Spring Bean,并将它们添加到 Spring 应用程序上下文中。在使用 @Bean 注解时,我们必须提供一个方法,在这个方法中定义 Bean,并用 @Bean 注解来标注。

@Configuration
public class ExampleConfiguration {

    @Bean
    public ExampleRepository exampleRepository() {
        // ...
    }

    @Bean
    public ExampleService exampleService() {
        return new ExampleService(exampleRepository());
    } 
}
@Profile

@Profile 注解是一个 Spring 中用于设置 Bean 的配置文件的注解,我们可以使用它来标记 Bean,这样 Spring 就可以根据特定的 profile 来加载 Bean。例如,在不同的环境中,我们可能需要使用不同的数据库。此时,我们可以使用 @Profile 注解来定义多个数据库 Bean,然后 Spring 可以根据特定的 profile 来自动选择正确的 Bean。

@Configuration
@Profile("development")
public class DevelopmentProfileConfiguration {

    @Bean
    public ExampleRepository exampleRepository() {
        return new DevExampleRepository();
    }
}

@Configuration
@Profile("production")
public class ProductionProfileConfiguration {

    @Bean
    public ExampleRepository exampleRepository() {
        return new ProdExampleRepository();
    }
}

以上就是 Spring 核心注解的介绍,通过使用这些注解,我们可以更加方便地描述和使用应用程序中的 Bean。