There are no modules declared in this project.
Skyail
一套简单、易用、专注开发细节的java开发框架,内容囊括java轻应用开发,企业级应用开发,大数据应用开发,前端应用开发等。以企业中遇到的真实问题为背景,集成当下最新的、轻量的、实用的功能或者组件,让日常开发更快速,更省心。
-----------------------------------------------------------------------
skyail-hummingbird 蜂鸟(蜂鸟虽小,五脏俱全)
轻量、易用、注重开发细节的快速开发项目。可以用于日常任务、数据处理、业务接口等场景。
一。全套后端代码自动生成
1.配置generator.properties
#数据库连接信息
driver=org.sqlite.JDBC
url=jdbc:sqlite:./db/db.db?date_string_format=yyyy-MM-dd HH:mm:ss
username=
password=
#表名称,多张表之间用,分隔
table_names=s_user
#模块名称
module_name=
#代码根目录名称
base_dir=com.skyail
2.执行CodeGenerator中的main方法生成代码
二。支持多种数据源
1.mysql
2.oracle
3.postgresql
4.sqlite
三。认证相关
1.token的用户名密码设置
通过 application.yml 中的 auth.user 节点进行设置。
auth:
user:
username: admin
password: 71d8b5968604e655c8a7a8a254b8f8c6
2.自定义用户加载逻辑
可以用于自定义加载用户名密码逻辑,比如从数据库中加载用户名和密码等。
2.1首先开启自定义用户加载
auth:
custom-user: false
2.2自定义service,实现接口 ICustomUserService
@Service
public class CustomUserServiceImpl implements ICustomUserService{
@Override
public User loadUserInfo(String username) {
User user = new User();
//可以从数据库中加载用户信息
user.setPassword("71d8b5968604e655c8a7a8a254b8f8c6");
user.setUsername("admin");
return user;
}
}
3.认证放权
3.1 方式一:通过注解 @AuthIgnore 来跳过token认证。
@GetMapping("/findByCondition")
@AuthIgnore
public R findByCondition(String name ){
Test test = new Test();
test.setName(name);
QueryWrapper wrapper = new QueryWrapper(test);
return R.data(service.list(wrapper));
}
3.2 方式二:通过在配置文件中配置:auth.ignore来跳过token认证。
auth:
ignore:
- /test/findByCondition
- /test_new/**
四。国密算法
集成 SM2、SM3、SM4国密算法,加密更高效、更安全。
五。开发细节支持
1.XSS防御。增强系统防护能力。
#xss过滤
xss:
enable: true
excludes:
#- /test/*
#- /test1/*
2.接口参数自动trim。统一处理接口首尾空字符问题。
#接口输入参数自动trim
auto-trim:
enable: true
3.便捷接口参数校验。通过注解的方式对接口参数进行校验。
3.1 第一步 在 entity 中添加注解
@NotNull(message = "id不能为空")
private Integer id;
3.2 第二步 在 controller中开启校验
@GetMapping("/testValidate")
public String testValidate(@Validated Test test){
if(!StringUtils.isEmpty(test.getId())){
return "id is "+test.getId();
}
return null;
}
4.缓存支持。
@Service
@EnableCaching
@Slf4j
public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements ITestService {
@Override
@CachePut(value = "test")
public Test saveTest(Test test) {
baseMapper.insert(test);
return test;
}
@Override
@Cacheable(value = "test")
public List<Test> findTest(long id) {
log.info("here is find");
Test test = new Test();
test.setId(1);
QueryWrapper wrapper = new QueryWrapper(test);
return baseMapper.selectList(wrapper);
}
@Override
@CacheEvict(value = "test")
public void deleteTest(long id) {
baseMapper.deleteById(id);
}
}
5.统一异常处理。
实现异常的统一处理,无需再设置异常处理逻辑。
6.接口返回包装。
@PostMapping("/findByConditionPost")
public R findByConditionPost( @RequestBody Test test ){
QueryWrapper wrapper = new QueryWrapper(test);
return R.data(service.list(wrapper));
}