SSM基于注解整合

基于注解的方式,没有web.xml

使用的是web3.0

环境搭建:

1. 新建一个maven项目,默认使用的是web3.0,没有web.xml文件

 

由于没有web.xml文件,所以pom.xml文件会报错.

2. 配置maven插件,忽略错误.

 


直接在pom.xml文件中   alt + /  就会出现提示:

 

 

然后在 maven-war-plugin进行配置:

 

可以忽略没有web.xml.

此时需要更新  maven-update

设置项目的运行时环境

 

此时也可以在pom.xml里面手动添加maven编译插件:

 

需要注意的是:运行时环境得到jdk版本一定要大于编译时的jdk的版本,不然会有问题.

基于注解开发,需要知道的一个知识点:

当你一把项目放到Tomcat容器,启动运行之后,tomcat会去找依赖中找一个核心类:

 


Tomcat找到这个文件之后,会读取这个文件的内容:

 

然后Tomcat会通过反射,创建这个对象:

 

 

onStartUp方法

 

这个类的onStartUp方法,会将所有WebApplicationInitializer的子类都加到这个类的set集合.用于交给spring来创建对象,

3. 创建一个JtWebAppInitializer

 

继承一个抽象类;

 

我们还需要一个类来代理spring的核心配置文件,用来进行包扫描,和开启mvc注解:

 

实现这个接口的类,可以用来充当spring的核心配置文件:

为了方便,可以让自己的类继承这个接口的子类;

 


需要把配置类加到前端控制器类,相当于把配置文件加到前端控制器DispatherServlet;

 

这个类的getServletConfigClasses:

此方法负责加载Controllers, ViewResovlers, HandlerMapping

 

对于AppServletConfig配置类,还可以增加拦截器,以及可以限定只去扫描@Controller,不去扫描@Service以及@Reporisity

 

重新理解:

我们写的JtWebAppInitializer的作用就相当于web.xml,这个类其实就是初始化的一个容器,注意并不是DispatherServlet,这个类知识把DispatherServlet进行初始化而已.

 

看最里面的接口:

 

这个接口是spring.

看这个接口的解释:

 

翻译:这个接口是被用在Servlet3.0+的环境下实现的,目的是以程序的方式来配置的,是跟传统的web.xml(或者结合web.xml)实现的刚好相对的.

 

这个接口的实现类将会被SpringServletContainerInitializer自动检测到,这些实现类将被任何的Servlet3.0+容器自动创建.

 

Servlet3.0设计来支持用SpringSPI来实现servlet容器的基于编码的配置,

 

这个类将会被加载和初始化,并且它到底方法将会被任何的Servlet3.0-容器在容器启动时实现.

 

JtWebAppInitializergetServletConfigClass()getRootConfigclasses()

 

==

 


 

 

现在还需要一个AppRootConfig,这个类是用来做后端的配置的,创建DruidDataSOurce,等连接资源,扫描com.jtservice注解

配置AppRootConfig:

>>1.配置DruidDataSource:

 

注意在web项目下,加载属性文件是要加上  classpath  

>>1.2测试DruidDataSource是否配置好了;

 

查询出数据就说明DruidDataSource配置好了;

>>2.1配置SqlSessionFactory

 

2.2测试

 

>>3.1配置dao接口的包扫描:

 

>>4.2service:由接口

 

>>4.2去测试service:

 

这种情况下会报错的;

 

出现这种错的原因是:AppRootConfig默认是要去扫描com.jt下面所有类的的所有注解,会根据这个注解创建对象.

这时@Controller也要去扫描,但是这是的@Controllermvc来扫描的,并且需要在tomcat环境下创建,但是现在我们是在Junit下做测试,所以会报错,所以AppRootConfig在扫描时,应该不去扫描@Controller注解:

 

但是如果只是这样配置的话,@Service这个注解也不会去扫描,所以还得加上@Service注解;

 

4. 配置Controller

 

Produces 的配置 是用来解决响应乱码的问题

猜你喜欢

转载自blog.csdn.net/qq_38200548/article/details/79889263