1、在【springboot】中获取spring容器中的bean(https://blog.csdn.net/lmb55/article/details/82156262?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242)
SpringBoot平台中采用ApplicationContextAware的方式完成ApplicationContext实例的获取,并通过ApplicationContext实例来手动获取容器中的bean实例。(这种方式与导入包创建对象实例有什么区别呢?)
2、RestTemplate详解(https://www.jianshu.com/p/90ec27b3b518)
resttemplate实现对restful的访问(与apache的HttpClient功能类似)
3、@Transactional(rollbackFor = Exception.class)(https://www.jianshu.com/p/befc2d73e487)
等同于@Transactional(rollbackForClassName = Exception) 与之相反 @noRollbackFor
使用误区:被引用的方法添加注解。aInnerFunction抛异常。
public class AClass {
public void aFunction() {
//todo: 数据库操作A(增,删,该)
aInnerFunction(); // 调用内部没有添加@Transactional注解的函数
}
@Transactional(rollbackFor = Exception.class)
protected void aInnerFunction() {
//todo: 操作数据B(做了增,删,改 操作)
throw new RuntimeException("函数执行有异常!");
}
}
结果:两个函数对数据库的操作都不会回滚。因为内部函数@Transactional注解添加和没添加一样。
4\MP中Iserver接口的介绍(https://blog.csdn.net/weixin_38111957/article/details/92415413)
查看源代码发现,其实将基本的增删改查用于server层继承使用。与mapper层继承BaseMapper功能类似
mybatis抽取基类实现通用增删改查(https://blog.csdn.net/YingTao8/article/details/83116256)
5、@Transactional注解和trycatch联合使用(https://blog.csdn.net/taiguolaotu/article/details/112480910)
Transactional出现异常全部事务出现回滚;
联合使用时,异常被try catch捕获,其他数据依旧可以继续操作不中断。
@Service
public class SysNewsServiceImpl implements SysNewsService {
private Logger logger = LoggerFactory.getLogger(SysNewsServiceImpl.class);
@Autowired
private SysNewsMapper sysNewsMapper;
@Override
@Transactional(rollbackFor=Exception.class)
public void addSysNews(SysNews sysNews) {
SysNews sysNews1 = new SysNews( "2", "2", 2, 2, new Date());
SysNews sysNews2 = new SysNews( "东风然后涂华军软件园ada法师法师发大事发生", "1", 1, 1, new Date());
// 东风然后涂华军软件园ada法师法师发大事发生
List<SysNews> sysNewsList = new ArrayList<>();
sysNewsList.add(sysNews1);
sysNewsList.add(sysNews2);
for (SysNews news : sysNewsList) {
try {
sysNewsMapper.insert(news);
} catch (Exception e) {
logger.info("增加消息出错",e);
}
}
}
}
6、多线程 CallAble接口的实现(https://blog.csdn.net/qq_844085127/article/details/108872756)
多线程的实现方式有几种,1、继承Thread类;2、实现Runnable接口
CallAble接口也可以实现多线程,和Runnable区别在于CallAble可以有返回值,也可以抛出异常,而Runnable没有
7、java中定时j接口Job的使用(https://blog.csdn.net/weixin_43751710/article/details/90597263)
此处需要理解几个核心元素:任务,触发器,调度器
任务:job用来定义任务的执行逻辑;jobDetail用来描述job的定义
触发器:用来定义调度任务的时间规则,在Quartz中主要由四种类型的Trigger:SimpleTrigger、CronTrigger(常用)、DataIntervalTrigger、NthIncludedTrigger
调度器:实际执行调度逻辑的控制器,Quartz提供了DirctSchedulerFactory和StdSchedulerFactory等工程类,用于支持Scheduler相关对象的产生。
8、log.error拼接中文报错error(https://blog.csdn.net/yangshangwei/article/details/50894202)
参考此文档处理该问题。
, , AidlTokenType.import or AidlTokenType.package expected, got ‘非’
此处拼接中文报出异常,但还是不太清楚为何出现此异常,留下记录。
相同的路径,找到图中的标记,然后进行取消勾选。
9、ApiModel和ApiModelProperty的用法(https://www.5axxw.com/wiki/content/1u9xu6)
@Api用法介绍(https://blog.csdn.net/kang9399052316/article/details/105765068)
@Controller和@RestController(等同于@ResponseBody和@Controller的组合使用,但是无法返回原来的页面)的用法(https://blog.csdn.net/u010412719/article/details/69710480)
@RequestParam
10、@Param注解使用介绍(https://blog.csdn.net/jiashanshan521/article/details/86691912 https://blog.csdn.net/jiashanshan521/article/details/86691912)
主要功能是在mapper文件中对方法中参数的标注,对Mapper.xml文件接收时可以得知参数的名称以及参数类型。(一般使用的是#{}的方式,${}会有sql注入的问题)