网站建设课程设计心得体会,做网站宣传有用吗,wordpress截取字符串,做网站用什么软件啊基于注解的SSM整合
在之前我们进行了基于XML配置文件的整合#xff0c;这次我们介绍基于注解的SSM框架的整合。基于注解的含义是将我们之前所有的配置文件用java类来代替#xff0c;也就是我们会在Java类中编写之前我们之前在配置文件中编写的内容。 首先我们将之前我们编写…基于注解的SSM整合
在之前我们进行了基于XML配置文件的整合这次我们介绍基于注解的SSM框架的整合。基于注解的含义是将我们之前所有的配置文件用java类来代替也就是我们会在Java类中编写之前我们之前在配置文件中编写的内容。 首先我们将之前我们编写的基于XML的SSM整合复制一份我们基于这个项目去改造成基于注解的SSM整合最终我们的效果是要将resources文件夹下面的所有的配置文件都用Java类去代替
MyBatis的注解转换
首先还是从MyBatis开始我们之前是基于XML配置文件开始的而我们用到的是application-dao.xml配置文件在这个文件中我们配置了SqlSessionFactory和Mapper以及我们的数据源那么现在我们就把这些配置文件搬到Java类中。 我们首先打开我们的application-dao.xml文件查看里面的内容在这个文件里面我们做了三件事1.声明了数据源。2.配置SqlSessionFactory。3.配置dao层接口映射文件。那么我们就依次将这些配置文件搬出来。 首先我们创建一个软件包叫做com.spring.config用来存放我们Java类的配置文件然后创建第一个配置类叫做JdbcConfig这个类用来配置数据源信息。 之前我们的数据源对象是通过一个类去帮我们代理这个类叫做com.alibaba.druid.pool.DruidDataSource现在我们继续使用这个类来代理我们的数据源对象如果要使用第三方Bean时候我们要使用Bean注解声明这是我们引用的Bean并将其注册到IoC容器中。 在之前的XML配置文件中我们要获取一个类的对象我们需要用class指定类的全路径然后我们就可以获取到这个类的对象。我们在类中定义一个方法这个方法的返回值就是我们想要的对象的类型比如现在我需要一个dataSource那么我就把我的方法的返回值设置成dataSource这样我们就可以在IoC容器中注册进一个dataSource类型的对象。 这个地方需要去理解一下注意我们方法的返回值的类型即可。
package com.spring.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;public class JdbcConfig {Value(jdbc:mysql://localhost:3306/mybatis)private String url;Value(com.mysql.cj.jdbc.Driver)private String driver;Value(root)private String username;Value(gaoyang1)private String password;Beanpublic DruidDataSource dataSource(){DruidDataSource dataSource new DruidDataSource();dataSource.setUsername(username);dataSource.setUrl(url);dataSource.setPassword(password);dataSource.setDriverClassName(driver);return dataSource;}
}数据源配置完成之后我们就正式的开始配置MyBatis的配置类我们继续在config软件包下面创建一个文件叫做MyBatisConfig。要把一个普通的类转换成Spring的配置类我们需要在类名上添加Configuration注解。 然后我们需要添加SqlSessionFactory对象根据之前我们的经验我们要使用跟SqlSessionFactory有关的类那么Spring整合MyBatis包里面专门为我们准备一个用于管理SqlSessionFactory的类叫做org.mybatis.spring.SqlSessionFactoryBean那么根据我们之前所说的我们现在就要定义一个方法它的返回值就是SqlSessionFactoryBean并且我们要在方法中对SqlSessionFactory做一些配置。 对于SqlSessionFactory的配置主要就是配置我们之前就已经配置好的数据源对象。 要在一个Bean中引入另一个Bean我们只需要在方法的参数中声明被引入的Bean的类型的对象即可在程序运行的时候IoC会帮我们自动将类型相同的Bean进行自动装配 比如说我现在正在编写SqlSessionFactory类此时我们需要引入之前写好的dataSource类那么我们就可以在SqlSessionFactoryBean方法的形参中声明一个参数它的类型就是dataSource我们可以在方法中正常的去使用这个类。
配置完SqlSessionFactoryBean之后剩下的就是配置dao层接口扫描类这个类的作用是扫描我们包下的接口自动的帮我们为每一个接口创建一个实现类我们只需要声明接口而不用去创建接口的实现类以及将实现类注册进IoC的过程。
package com.spring.config;import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;Configuration
public class MyBatisConfig {
// 创建第三方Bean管理SqlSessionFactoryBeanpublic SqlSessionFactoryBean sessionFactoryBean(DataSource dataSource){SqlSessionFactoryBean sessionFactoryBean new SqlSessionFactoryBean();sessionFactoryBean.setDataSource(dataSource);return sessionFactoryBean;}
// 创建第三方Bean管理接口文件映射Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer mapperScannerConfigurer new MapperScannerConfigurer();mapperScannerConfigurer.setBasePackage(com.spring.dao);return mapperScannerConfigurer;}
}配置完之后我们就完成了MyBatisConfig类的配置现在这个类就相当于是我们的application-dao.xml配置文件那么接下来我们就要开始搬运application-service.xml文件里面的配置了 在application-service.xml中我们只做了一件事那就是扫描Service包下面的注解并将注解对应的类注册进IoC容器中。那么我们首先先把这个做了 在Config包下面创建一个类叫做SpringConfig配置文件并且在类上添加Configuration注解将他变成一个配置类。 然后就是实现扫描包的功能实现在配置文件中扫描包需要添加ComponentScan注解注解中使用字符串配置要扫描的包的全限定路径。 在将application-service.xml文件中的基础配置搬运过来之后我们还需要做一个动作就是将两个配置文件整合一下现在我们还是只是两个分散的配置文件互相之间没有联系我们要让他们形成一个完整的系统就要在SpringConfig中引入MyBatis的两个配置文件分别是JdbcConfig和MyBatisConfig。 在一个配置类中引入外部的配置文件我们需要使用到Import注解。 这个注解的值是一个数组里面可以存放我们的配置文件的class文件这样我们就完成了Spring和MyBatis的整合。
package com.spring.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;Configuration
ComponentScan(com.spring.service)
Import({MyBatisConfig.class, JdbcConfig.class})
public class SpringConfig {
}然后我们就开始修改SpringMVC的配置文件的内容首先我们来看跟SpringMVC有关的内容都有什么一个SpringMVC的容器配置文件一个web.xml配置文件。我们首先来看SpringMVC的配置文件。在这个文件中我们做了三件事首先是包扫描扫描controller包下面的Bean并将他们注册到IoC容器中。以及配置了一个注解驱动。 我们首先创建一个配置类叫做SpringMVCConfig文件然后开始将我们刚才说到的两个步骤搬运到我们的配置类中。 首先是转换配置类的注解是Configuration以及包扫描的注解是ComponentScan那么注解驱动器怎么配置呢在SpringMVC的注解驱动的配置需要添加EnableWebMvc注解去完成这个注解只需要存在就可以了不需要有任何的值传入。 这样我们之前的SpringMVC的配置文件中的内容就已经全部转移到配置类中了。
package com.spring.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;Configuration
ComponentScan(com.spring.controller)
EnableWebMvc
public class springMVCConfig {}然后我们再来看web.xml文件在这个文件中我们主要就是配置了一个前端控制器并且完成了一些初始化的操作那么我们的Spring就提供了一个抽象类去完成这一系列的动作既可以完成前端控制器的配置还能完成我们两个容器也就是Spring容器和SpringMVC子容器的容器初始化的动作。 任何继承AbstractAnnotationConfigDispatcherServletInitializer的类都会在项目启动的时候自动配置DispatchServlet、初始化SpringMVC容器和Spring容器 这是Spring官网的原话也就是我们只需要创建一个类去继承他的AbstractAnnotationConfigDispatcherServletInitializer类就可以完成上述的三个动作。 那么我们现在就在config包下面创建一个类叫做ServletContainersInitConfig这个类去继承AbstractAnnotationConfigDispatcherServletInitializer。 可以看到我们在继承这个类之后他会提示我们需要重写三个方法那么这三个方法就是对应我们刚才说的三个动作我么现在开始简单介绍一个这三个方法对应的功能
getRootConfigClasses将Spring配置类的信息加载到Spring容器中getServletConfigClasses将SpringMVC配置类的信息加载到SpringMVC容器中getServletMappings可以指定DispatchServlet的拦截路径一般就是“/”这个值拦截所有就可以了
package com.spring.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;public class ServletContainersInitConfig extendsAbstractAnnotationConfigDispatcherServletInitializer {Overrideprotected Class?[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}Overrideprotected Class?[] getServletConfigClasses() {return new Class[]{springMVCConfig.class};}Overrideprotected String[] getServletMappings() {return new String[]{/};}
}至此我们就完成了基于注解的SSM的整合在整个的过程中我们要明确的认识配置类和配置文件的关系只要搞清楚了注解和配置之间的关系我们对于两个模式之间的转化就会非常的得心应手