1.声明
看的时候很容易,感觉很简单,实际操作过程又没那么容易,自己写代码,调试才是最好的,抽空要把IDEA的教程看一下,里面确实有很多东西不知道,比如怎么跑tomcat
2.接口加注释
现在才知道,在接口上面加注解是卵用没有的...
3.idea的容器
如果你写的代码没有问题,那么直接就可以看到你容器里面的各种bean
4.关于dtd
这个相当于是一个代码提示库,在没有网络的情况下,可以本地给你提示,但是今天的并不是这个原因,我也不知道为什么,带有“<>”这种标签的,会给你提示,但是假如你写了setting,然后在里面的name 和 value里面再写的时候,就没了提示。。。这我就暂时不管了吧,但是代码确实是可以跑起来的
5.总计2天时间的第一个ssm整合,就出现了不少问题。。。下面是所有的“坑”当然,估计只有我踩到
①ApplicationContext这个接口,在实际操作中实际上是不需要再像测试的时候这样写了的,直接就在这个server启动的时候自动给加载了,在这里仅仅是测试用
②路径问题:这里面所有的配置文件,只要不是base-package的,个人习惯吧,全部写file:全路径,这样子的话,配置文件,你想放哪里就放哪里,这个并不重要,放清楚地方就好了
③Junit的@Test,之前不知不觉,后来才发现,在这里,@Test的方法,是肯定不会是调用controller的。。。
因为spring-core(IOC)只管理service,dao,其他bean,不管理controller,既然是通过spring的配置文件拿到factoryBean的,那么肯定就无法拿到controller,所以在这里肯定是从factoryBean里面拿的service的bean。另外有一点,为什么Junit这里不启动tomcat,tomcat是一个服务器,你没有前端跟后端的交互,直接给了后端代码一个测试命令,根本就不需要tomcat,之后学习在IDEA里面配置tomcat是很有必要的。
④尽量,所有的bean都给一个id,尽量getBean的时候用name不要用class,怕出错
⑤springMVC容器和spring的IOC容器,我们从web.xml就可以看出来,springMVC的配置文件跟spring的配置文件都是写在web.xml里面的,只不过是加载顺序不同,首先加载的是spring的配置文件,后来加载servlet,也就是最重要的前端控制器DispatcherServlet的时候,才读springMVC的配置文件,所以...spring跟springMVC的容器是一种“父子容器关系”,但是spring是无法拿到,也无法操作springMVC里面的bean,也就是controller的,但是controller却可以用spring的bean,比如在controller里面使用service的filed service
⑥getBean(String)
@org.junit.jupiter.api.Test
public void testPerson(){
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("file:E:/zeroDemo/src/main/java/config/applicationContext.xml");
PersonService personService=(PersonService)applicationContext.getBean("personService");
Person person = personService.selectById(3);
System.out.println(person);
}
getBean的时候,如果是通过name,那么在这里强转和得到的,必须要是service的接口,而并非serviceImpl,亲测,否则会报错,报错的是关于代理对象的exception
⑦spring整合mybatis
spring是可以跟mybatis进行非常好的整合的,整合位置就是sqlSessionFactory,我们在这里把1.mybaits-config 2.mapper.xml一起放在sqlSessionFactory这个bean里面配置,并且在spring的配置文件里面,我们要扫描非controller的bean,还要让
MapperScannerConfigurer
去扫描所有的dao的mapper接口
⑧web.xml的执行顺序
在后续很有可能会遇到关于web.xml执行顺序的坑,暂时先记录一下web.xml的执行顺序
context-param-->listener-->filter-->servlet
小结-->
Spring的代码,最主要的内容在几个地方:
1.mapper里面写sql语句
2.service里面写事务tx(重点)
3.controller里面写接口
后台的工作还是很多的,先写几个项目把ssm写的有点熟练以后,开始搞springboot+集群