SSM中组件的配置方法总结,为什么有些需要加@Bean而有些需要实现接口并重写?

一、通过配置类完成配置方法

为什么有些组件的配置需要加@Bean而有些需要实现接口并重写?

1、 目的不同

  • @Bean注解的目标是创建和配置服务实例,主要关注的是对象的初始化过程、依赖的注入等,是实现依赖注入和反转的基础。
  • 实现接口并重写更多是为了拓展框架的功能行为,比如通过重写WebMvcConfigurer的方法来制定SpringMvc的行为,关注的是框架层面的配置和扩展,而不是单个@Bean的创建。

2、 作用范围不同

  • @Bean定义的组件是具体的对象实例,是Spring中容器中的Bean,用于构成应用的业务逻辑和服务层。
  • 接口重写通常用于框架层面的配置,影响的是整个应用的处理流程和运行模式,比如全局的拦截器配置、视图配置等。

适用场景

1、@Bean

当你需要向Spring容器注册一个特定的实例,并且需要特定的初始化逻辑、依赖关系其他@Bean作为依赖时,就可以使用@Bean。例如配置数据源、事务管理器、Mybatis的sqlSessionFactory等、AOP中定义切面逻辑。

2、实现接口并重写

当你需要改变或扩展框架默认行为但又不想或不能改变框架源码时,可以使用此方法,例如自定义Spring Mvc的拦截器、视图解析器、AOP中定义切面逻辑。

这里可能会有所疑问,AOP不是也可以通过注解实现么?
确实,AOP组件的配置方式确实与众不同,它不但可以通过实现接口重写方法实现,也可以通过注解实现。
aop的两种配置方式

二、SSM组件的其他配置方法

1、基于注解的配置

  • Component Scanning(组件扫描)
    通过在配置类上使用@ComponentScan注解,Spring会自动扫描指定包路径下带有@Component、@Service、@Repository、@Controller等注解的类,并将其注册到IOC容器。
  • Stereotype Annotations(注解角色)
    如上所述@Component、@Service、@Repository、@Controller这些注解不仅标记类的角色,还隐含自动注册的功能,减少配置文件的编写。

2、基于xml配置

  • 虽然随着Java配置的普及,XML配置的使用有所减少,但在某些场景下,如第三方库的集成或遗留系统的维护,仍然会使用XML来定义Bean和配置信息。Spring支持混合使用XML和Java配置,通过@ImportResource注解可以导入XML配置文件。

3、多环境配置

  • 不管是Java配置还是XML配置,Spring都支持通过profiles来实现多环境配置。可以根据不同的环境(如开发、测试、生产)加载不同的配置,这可以通过在配置文件中使用spring.profiles.active属性或在Java配置中使用@Profile注解来实现。

4、PropertySource和Environment(属性源与环境)

  • Spring支持从多种来源(如properties文件、系统环境变量、命令行参数等)读取配置属性,并通过@Value注解或Environment接口在代码中使用这些属性,增加了配置的灵活性和可外部化管理的能力。

5、自动配置与Spring Boot(不属于SSM范围)

  • 虽然不属于SSM范围,但也属于组件配置,在此稍微提一下。
    Spring Boot框架进一步简化了配置,通过自动配置(Auto-configuration)和starter依赖,大量常用配置已经预设好,开发者只需少量或零配置即可启动应用。Spring Boot应用通常结合Java配置和application.properties/yaml文件进行配置。
posted @ 2024-07-01 20:45  归颰  阅读(3)  评论(0编辑  收藏  举报