Springboot min -Solon 詳解系列文章:
Springboot mini - Solon詳解(一)- 快速入門
Springboot mini - Solon詳解(二)- Solon的核心
Springboot mini - Solon詳解(三)- Solon的web開發
Springboot mini - Solon詳解(四)- Solon的事務傳播機制
Springboot mini - Solon詳解(五)- Solon擴展機制之Solon Plugin
Springboot mini - Solon詳解(六)- Solon的校驗框架使用、定製與擴展
Springboot mini - Solon詳解(七)- Solon Ioc 的註解對比Spring及JSR330
Springboot mini - Solon詳解(八)- Solon的緩存框架使用和定製
Springboot mini - Solon詳解(九)- 渲染控制之定製統一的接口輸出
Springboot mini - Solon詳解(十)- 怎麼用 Solon 開發基於 undertow jsp tld 的項目?html
Solon | Spring | JSR 330 | |
---|---|---|---|
@Inject * | @Autowired | @Inject | 注入Bean(by type) |
@Inject("name") | @Qualifier+@Autowired | @Qualifier+@Inject | 注入Bean(by name) |
@Inject("${name}") | @Value("${name}") | - | 注入配置 |
@Component | @Component | @Named | 託管組件 |
@Singleton | @Scope(「singleton」) | @Singleton | 單例(Solon 默認是單例) |
@Singleton(false) | @Scope(「prototype」) | - | 非單例 |
@Init * | @PostConstruct | - | 構造完成並注入後的初始化 |
@Configuration | @Configuration | - | 配置類 |
@Bean | @Bean | 配置組件 | |
@Mapping | @RequestMapping,@GetMapping... | - | 映射 |
@Controller | @Controller,@RestController | - | 控制器類 |
@Service | @Service | - | 服務類 |
@Dao | @Dao | - | 數據訪問類 |
Solon 強調有節制的註解使用,尤爲對於增長處理鏈路的操會比較節制。java
@Component public class UserService{ @Db("db1") //@Db爲第三方擴展的注入註解 BaseMapper<User> mapper; UserModel getUser(long puid){ return db1.selectById(puid); } } /* @Component("userService") public class UserService{ @Db("db1") BaseMapper<User> mapper; UserModel getUser(long puid){ return db1.selectById(puid); } } */
@Singleton(false) //非單例註解 @Controller public class UserController{ @Inject("${message.notnull}") String message; @Inject UserService userService @Mapping("/user/{puid}") public Object user(Long puid){ if(puid == null){ return message; } return userService.getUser(puid); } }
@Configuration public class Config { @Bean("db1") public DataSource db1(@Inject("${test.db1}") HikariDataSource ds) { return ds; } } //系統異常監聽(這個系統會發的,還能夠監聽不一樣的異常) // @Configuration public class ThrowableListener implements EventListener<Throwable> { WaterLogger log = new WaterLogger("rock_log"); @Override public void onEvent(Throwable err) { Context ctx = Context.current(); if (ctx != null) { String _in = ONode.stringify(ctx.paramMap()); log.error(ctx.path(), _in, err); } } } //Bean擴展監聽(爲Mybatis配置類,添加插件) // @Configuration public class SqlHelperMybatisAutoConfiguration implements EventListener<Configuration> { //... @Override public void onEvent(Configuration configuration) { SqlHelperMybatisPlugin plugin = new SqlHelperMybatisPlugin(); //... configuration.addInterceptor(plugin); } }