1.实现EnvironmentAware接口可以获取配置文件当前的环境变量。
2.@Configuration 和 @Component 区别
@Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。
3,vo是业务使用的对象,po是持久层使用的对象与数据库表对应,dto是接收传输数据的。
4.$在mybatis中是字符串拼接,但在某个情况下必须使用,比如order by
5.mybatis的基本步骤:
获取sqlsession
open session获取对象
如果直接读取xml使用session.select()
如果xml和接口有关联,使用getMapper获取接口的代理对象
6.mybatis动态sql
7.統一异常处理
@RestControllerAdvice
@ExceptionHandler
8.插入后生成id
@GeneratedValue(generator = “JDBC”)
9.使用 @Param就不用parameterType属性
10.分页步骤
11.on和where的区别
inner join没有区别,left join时on里面的条件无论满不满足都会保留左边表的数据
12.spring的发布订阅
一个类继承ApplicationEvent为一个事件,发布者可通过publishEvent触发监听者(实现ApplicationListener接口)还可使用@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
13.级别排序为: TRACE < DEBUG < INFO < WARN < ERROR,当前日志配置为INFO,只能输出级别大于等于INFO的日志
14.@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
15.
16.@ImportResource加载配置文件
@import:对应的import的bean都将加入到spring容器中,这些在容器中bean名称是该类的全类名
@Bean相对来说就更加灵活了,它可以独立加在方法或者类上,按需注册到spring容器,而且如果你要用到第三方类库里面某个类或者方法的时候,你就只能用@Bean把这个类或者方法注册到spring容器,会按自己的逻辑创建一个bean
@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)
@Bean单独用无法把类加载进spring容器里
@Configuration+@bean当方法被调用时返回的是被Spring管理的单例Bean而@Component返回的不是
17.PlaceholderConfigurerSupport是在bean加载时去处理bean的属性,
18.实现了BeanFacoryAware接口,可以使得bean获取到容器的内部信息,从而进行某些定制化的操作
19.Spring是一个大量使用策略设计模式的框架,这意味着有很多相同接口的实现类,那么必定会有优先级的问题。于是,Spring就提供了Ordered这个接口,来处理相同接口实现类的优先级问题(策略模式,就是一个类一个方法传入不同的接口实现类,实现不同的策略,因为java不能传方法,所以只能传接口)
20.spring的前置处理器是在实例化对象之前调用,后置处理器是在实例化对象之后调用。
21.实现某个框架的接口,框架是如何实现该功能的?
接口被调用必须实例化对应的实现类,不然会报空指针
框架会先实例化该对象,然后判断该类是否是接口的实例,是的话则会调用方法,在使用者视角看来就是实现了某一接口就可以获取框架内部值和执行一些自定义的逻辑,和js的回调函数一样
22.@Import和@@Configuration配合让spring扫描到这个类然后把@Import里面的加入到容器中
23.可以往spring容器里注册同一类型的bean,已方法名为key存为map
24.@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。
25.@ConditionalOnMissingBean表示只注册一个这样类型的bean
26.注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响;
在Spring 4.0版本之前,@Order注解只能控制AOP的执行顺序,在Spring 4.0之后,它还可以控制集合注入中bean的顺序。
@Order注解放到@Configuration中是无法控制bean的注入顺序的
@EnableAutoConfiguration这个注解是用来根据类路径中的依赖包猜测需要注入的bean,实现自动注入
@EnableAutoConfiguration也是借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器
@EnableAutoConfiguration就是去读取包下面的META-INF/spring.factories文件,如果配置了自动配置类,springboot就可以把配置文件里的bean自动加载到spring容器里,而不用我们使用@bean自己去加载
@Async必须让spring代理了才会生效,如果异步方法出现错误是不会触发事务控制的
如果有一种场景调的方法不能影响主流程,那么我们可以使用异步方法
Spring的发布订阅模型实际上并不是异步的,而是同步的来将代码进行解耦。异步方法出现错误是不会触发事务控制的
@transactional是在方法完全执行完没有错误时提交,所以如果此方法内有异步方法则会出现数据库没有数据就操作的情况,所以使用@TransactionalEventListener在提交后执行
27.maven里的profile里的配置不同环境激活的配置,可以配置激活的条件。
28.中的配置作用于Maven的site阶段,用于生成报表。
29.package 只是打包到target下, install是打包安装到我的本地maven仓库。
30.springmvc中int类型不传会封装错误