📜  带有示例的 Spring @Configuration 注解(1)

📅  最后修改于: 2023-12-03 14:54:05.717000             🧑  作者: Mango

带有示例的 Spring @Configuration 注解

在 Spring 中,@Configuration 注解是用于定义配置类的,它会提供一个或多个 bean 的定义,这些 bean 的定义会被注册到 Spring 应用程序上下文中。与传统的 XML 配置方案相比,使用 @Configuration 注解可以更加灵活和简洁。

使用方法

要创建一个配置类,只需要创建一个带有 @Configuration 注解的普通 Java 类即可。在这个类中,可以使用 @Bean 注解来定义 Bean。例如:

@Configuration
public class AppConfig {
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }

    @Bean
    public UserDao userDao() {
        return new UserDaoImpl();
    }
}

上面的示例中,我们创建了一个名为 AppConfig 的配置类,并定义了两个 Bean:userServiceuserDao

示例代码

下面是一个更完整的示例代码,其中包含了多个配置类和多个 Bean:

@Configuration
public class AppConfig {
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }

    @Bean
    public UserDao userDao() {
        return new UserDaoImpl();
    }
}

@Configuration
public class WebMvcConfig {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Bean
    public HandlerMapping handlerMapping() {
        return new BeanNameUrlHandlerMapping();
    }
}

@Configuration
@EnableRedisRepositories
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        return redisTemplate;
    }

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new JedisConnectionFactory();
    }
}

上面的代码定义了三个配置类:

  • AppConfig:定义了两个 Bean,userServiceuserDao
  • WebMvcConfig:定义了两个 Bean,viewResolverhandlerMapping
  • RedisConfig:定义了两个 Bean,redisTemplateredisConnectionFactory

需要注意的几点是:

  1. @Configuration 注解告诉 Spring 这个类是一个配置类。
  2. @Bean 注解告诉 Spring 这个方法返回的是一个 Bean,Spring 会将这个 Bean 注册到应用程序上下文中。
  3. @EnableRedisRepositories 注解告诉 Spring 启用 Redis 存储库功能。
总结

@Configuration 注解是用于定义配置类的,它会提供一个或多个 bean 的定义,这些 bean 的定义会被注册到 Spring 应用程序上下文中。与传统的 XML 配置方案相比,使用 @Configuration 注解可以更加灵活和简洁。