Solon

常用注解与 SpringBoot 的对比

1、注解对比

Solon 1.12.3Springboot 2.3.3说明
@Inject *@Autowired注入Bean(by type)
@Inject("name")@Qualifier+@Autowired注入Bean(by name)
@Inject("${name}")@Value("${name}")注入配置
@Singleton@Scope(“singleton”)单例(Solon 默认是单例)
@Singleton(false)@Scope(“prototype”)非单例
@Import@Import + @ComponentScan配置组件导入或扫描(一般加在启动类上)
@PropertySource@PropertySource配置属性源(一般加在启动类上)
@Configuration@Configuration配置类
@Bean@Bean配置Bean
@Controller@Controller,@RestController控制器类(有类代理)
@Remoting远程控制器类(有类代理;即RPC服务端)
@Mapping ...@RequestMapping,@GetMapping...映射
@Param@RequestParam请求参数
@Header@RequestHeader请求头
@Cookie@CookieValue请求Cookie
@Body@RequestBody请求体
@Component@Component普通托管组件
@Service@Service服务托管组件(有类代理)
@Dao@Dao数据访问托管组件(有类代理)
@Repository@Repository仓库托管组件(有类代理;DDD里的概念类)
@Init *@PostConstruct组件构造完成并注入后的初始化
@TestPropertySource@TestPropertySource配置测试属性源
@TestRollback@TestRollback执行测试回滚

2、补充说明

  • Solon 的 @Inject 算是: Spring 的@Value、@Autowired、@Qualifier 三者的结合,但又不完全等价
  • Solon 的 @Import 算是:Spring 的@Import、@ComponentScan 两者的结合,即有导入功能也有扫描功能
  • Solon 托管的 Bean 初始化顺序:new() - > @Inject - > @Init
  • 注1:Method@Bean,只执行一次(只在 @Configuration 里有效)
  • 注2:@Inject 的参数注入,只在 Method@Bean 上有效
  • 注3:@Inject 的类注入,只在 @Configuration类 上有效
  • 注4:@Import 只在 主类上 或者 @Configuration类 上有效