Springboot能说下常用注解
-
@SpringBootApplication
申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 -
@EnableAutoConfiguration
自动配置需要的组件
annotation tells Spring Boot to "guess" how you will want to configure Spring, based on the jar dependencies that you have added. For example, If HSQLDB is on your classpath, and you have not manually configured any database connection beans, then Spring will auto-configure an in-memory database. -
@ComponentScan
扫描自定义的Bean
tells Spring to look for other components, configurations, and services in the specified package. Spring is able to auto scan, detect and register your beans or components from pre-defined project package. If no package is specified current class package is taken as the root package. -
@Configuration
用Java代码配置Bean
在spring中的隔离级别是怎么设置的
@Transactional(isolation = Isolation.SERIALIZABLE)
public int insertUser(User user){
return userDao.insertUser(user);
}
AOP相关
类内部调用 AOP 问题:a() 方法被 @Around 注解用来输出日志,b() 方法没有 AOP 注解,但 b() 方法内部调用 a() 方法,那么调用 b() 方法会有怎么样的输出?
更加详细见Spring AOP无法拦截内部方法调用,大概的意思是代理是外面一层,原来的类是里面一层,调用b方法的时候是调用代理类的b方法,因为没有AOP注解,所以是直接调用原来类(对象)的b方法,原来类(对象)的b方法this.a的调用,this指的是原来类,不是代理类,所以不会输出日志。也就是进入到里层,里层调用的是里层。
答:不会有日志输出。因为这是类内部调用,而 AOP 是通过代理进行的,类内部调用不会调用代理类,不走代理所以不会有日志输出。如果想要有日志输出,需要在该类中通过 AopProxy 将代理对象(命名为 proxy)获取,然后在 b() 方法中通过 proxy 调用 a() 方法;
网友评论