搭建项目经验第三阶段

之前的日志并没有写到数据库的访问,所谓的测试其实也只是测试了controller的功能,而今天我就要开始测试数据库操作啦。
15、打开DispatcherServlet的配置文件写配置信息。配置数据源。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/kfjs"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>

16、打开DispatcherServlet的配置文件写配置信息。配置sqlsessionfactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:cn/dw/hz/dao/xml/*.xml"></property>
</bean>

17、打开DispatcherServlet的配置文件写配置信息,整合dao和Xml。为啥明明在xml里就已经声明了本xml对应哪个mapper,还要专门说明写明basepackage去指向保存地点?不明白。

<!-- 3、spring整合mybatis的核心配置,动态生成实现类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 有两种配置方法,带beanname就写value,不带的话表示对象则用ref -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<!-- 根据xml里的namespace找到对应的dao -->
<property name="basePackage" value="cn.dw.hz.dao"></property>
</bean>

18、打开DispatcherServlet的配置文件写配置信息。点击namespace标签,选择加载mvc头文件,开启日期类转换注解mvc:annotation-driven开启字符格式转换。

<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
     <list>
      <value>application/json;charset=utf-8</value>
      <value>text/html;charset=utf-8</value>
      <value>application/x-www-form-urlencoded</value>
     </list>
    </property>
   </bean>
  </mvc:message-converters>
 </mvc:annotation-driven>

基本上这个时候整个项目已经可以正常运作了。但一个健全的项目,应该还具备以下的一些功能。
19、打开DispatcherServlet的配置文件写配置信息。配置事务管理器。注意点击namespace标签,选择加载tx头文件开启日期类转换注解。在impl类里的某个方法前加上@transaction注解表示某个方法启用事务管理,方法内的所有对dataSource的操作受事务管理。

<!-- 配置事务管理器的bean -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"></property>
 </bean>
 <!-- 开启事务的注解驱动,就是去识别@transaction注解 -->
 <tx:annotation-driven transaction-manager="transactionManager"/>

使用样例

    @Transactional
    @Override
    public void addur(UserDto userDto) {
        //获得前台输入的user数据,包括role清单
        //新增一个user
        userMapper.add(userDto);
        //获得该user的role清单
        List<Integer> roleList=userDto.getRoleList();
        //int j=1/0;
        //针对每一个role,拼装一个RoleUser对象并执行add
        for(Integer i:roleList)
        {
        RoleUser roleuser=new RoleUser();
        roleuser.setUserId(userDto.getId());
        roleuser.setRoleId(i);
        roleUserMapper.add(roleuser);
        }


    }

20、打开DispatcherServlet的配置文件写配置信息。配置aop,最常见的用途就是记录日志。

 <!-- aop面向切面的配置 -->
 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

创建一个专门用于aop操作的aop类;加上@Component和@Aspect表示这是一个用来做切面处理的类
在类里写一个无参无返回无内容的空方法;
在该方法上加上注解,注明被切入的方法有哪些;注意每个类只能有一个切入方法

 @Pointcut("execution(* cn.dw.hz.controller.*.*(..)) || execution(* cn.dw.hz.service.impl.*.*(..))")
 public void log() {};
 @Before("log()")
 public void before(JoinPoint joinPoint)
 {
  System.out.println("切入开始!");
 }
 @AfterReturning("check()")
 public void addurafterreturn(JoinPoint joinPoint)
 {
  System.out.println("重点工作切入返回!");
  System.out.println("被切的目标对象:" + joinPoint.getTarget());
  System.out.println("被切的方法声明:" + joinPoint.getSignature());
  System.out.println("被切的方法的参数信息:" + Arrays.toString(joinPoint.getArgs()));
  Object[] list=joinPoint.getArgs();
  System.out.println("被切的方法的参数详细:" + ((UserDto)list[0]).getName());
 }
//注意around需要触发执行
 @Around("log()")
 public Object arround(ProceedingJoinPoint pjp) throws Throwable {
  System.out.println("======arround===========");
  System.out.println("=========before==========");
  Object obj = pjp.proceed();
  System.out.println("=========after==========");
  return obj;

 }

21、controller的方法不一定是返回数据,也可能是跳转页面,这时候需要在DispatcherServlet的配置文件稍作配置。假如controller的方法无@ResponseBody注解,那就意味着需要经过ViewResolver处理。

 <!-- mvc页面跳转的前后缀  /WEB-INF/jsp/user/list.jsp-->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>

猜你喜欢

转载自blog.csdn.net/cdfabc/article/details/82585224