一、spring持久层组件注解有哪些
@mapper,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。
@repository,需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注入到ServiceImpl中
二、springboot事务注解执行顺序
SpringBoot事务注解的执行顺序如下:@Transactional被注解的方法被调用时,Spring会在方法开始时开启一个事务,然后在方法执行结束时根据执行情况提交或回滚事务,最后释放连接。
如果该方法调用了其他被@Transactional注解的方法,则这些方法的事务都将加入到当前事务中,形成一个事务嵌套的过程。
在这个过程中,如果任意一个方法执行失败,则当前方法及所有已加入事务的方法都将回滚。如果都执行成功,则所有事务都会在方法结束时一并提交。
三、spring注解和配置文件的区别
注解:直接写在源码中,这样写简单、方便,看起来也直观,但是不方便修改配置:写在配置文件中,这样写灵活,修改方便,但是写起来很烦琐
四、springboot怎么注入@configuration类
springboot核心注解@EnableAutoConfiguration会导入@Import(AutoConfigurationImportSelector.class),这个类实现了DeferredImportSelector接口,即可以达到spring完成bean的初始化之后会回调该接口的selectImports方法,方法的参数是各个bean的类属性,注解等,返回的bean才会导入到spring中。AutoConfigurationImportSelector实现逻辑如下:
该方法逻辑大致就是加载各个jar包下的spring.factories配置文件,读取出自动配置的类,然后去掉重复的以及需要排除的,然后进行过滤,即filter方法,该方法如下: 重点看第一个for循环,getAutoConfigurationImportFilters()会返回所有AutoConfigurationImportFilter的实现类,目前只有OnClassCondition这个类实现了该接口,即返回的都是OnClassCondition类的对象,而OnClassCondition继承自SpringBootCondition,match会根据条件过滤掉不符合条件的配置类,留下符合条件的配置类,从而被AutoConfigurationImportSelector注入spring完成加载。这里说一下match方法是如何处理ConditionOnClass注解的,看实现,其中的getOutcomes方法实现,其中使用createOutcomesResolver方法创建了2个OutcomesResolver,需要注意的是,留下了一半的解析任务放在新开线程中实现以获得更好的性能,这里主要看StandardOutcomesResolver的实现,对应的实现方法: 可以看到读取了类上面的ConditionalOnClass注解的值,然后和环境中进行匹配,如果存在就返回ConditionOutcome对象,存在返回空。经过这些过滤,最终由上面说的AutoConfigurationImportSelector类返回后被spring加载从而实现了条件注解的配置功能。 另外@configuration类会在ConfigurationClassPostProcessor中进行处理,一些其他类型的@Condition条件判断等,如OnJavaCondition注解等,会在这里处理,这里不再赘述。好了,关于spring注解配置和spring注解配置bean的问题到这里结束啦,希望可以解决您的问题哈!