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); } }