SSM框架中继承了接口的类让Spring管理为什么不能自动注入

SSM框架中继承了接口的类让Spring管理为什么不能自动注入,第1张

<context:component-scan base-package="comjsuservice,comjsuutil"/>

<!--配置session工厂-->

<bean id="sqlSessionFactory" class="orgmybatisspringSqlSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="mapperLocations" value="classpath:mybatis/Mapperxml"/>

<property name="typeAliasesPackage" value="comjsumapper"/>

</bean>

<!--扫描mapper代理对象-->

<bean class="orgmybatisspringmapperMapperScannerConfigurer">

<!--设置扫描mapper的包-->

<property name="basePackage" value="comjsumapper"/>

<!-- mapper接口需要用到sqlSessionFactory 如果上下文环境只有一个数据源 则不需要配置 -->

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

</bean>

<!--配置通知-->

<tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes>

<tx:method name="get" read-only="true"/>

<tx:method name="select" read-only="true"/>

<tx:method name="insert" propagation="REQUIRED"/>

<tx:method name="update×" propagation="REQUIRED

这是idea超过eclipse的地方之一,自动检测有没有这个类在spring容器里,但是有些时候并不适用,建议你ait+enter,然后将这个自动检查关闭。因为整个SSM,自动扫描dao层是不需要实例的。不过不关闭也不要紧,编译也是通得过的,只是有点难看。

SSM框架是由Spring、SpringMVC和MyBatis三个框架集成而成,用于Java Web开发。如果要将已有的静态HTML网站改写为SSM框架下的动态Web应用,需要进行以下步骤:

1 创建一个maven项目,并配置pomxml文件,引入SSM框架的相关依赖。

2 在webxml中配置DispatcherServlet,指定SpringMVC配置文件的路径。

3 配置SpringMVC配置文件,包括扫描控制器、静态资源的访问路径、视图解析器等。

4 创建控制器类,编写处理请求的方法,并通过RequestMapping将请求映射到相应的方法上。

5 在MyBatis配置文件中配置数据库信息和映射文件路径,创建Mapper接口和对应的Mapperxml文件。

6 在Spring配置文件中配置MyBatis相关的Bean,包括数据源和SqlSessionFactoryBean等。

7 在控制器类中注入Mapper接口的实现类,使用Mapper接口中的方法进行数据 *** 作。

8 在JSP页面中使用EL表达式和JSTL标签展示数据,并通过表单提交数据给控制器处理。

通过以上步骤,即可将静态HTML网站改写为SSM框架下的动态Web应用。

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

Spring

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。

Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。

SpringMVC

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的 *** 作。SpringMVC相当于SSH框架中struts。

mybatis

mybatis是对jdbc的封装,它让数据库底层 *** 作变的透明。mybatis的 *** 作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

在使用 SpringMVC 的时候,我们可能需要将一个对象从 View 传递给 Controller 。而当这个 Object 只是一些简单的 String , int 或者 boolean 类型的成员变量时,SpringMVC 能自动将 View 层的 JSON 包含的 String 类型转换为 Object 成员变量相应的类型。但是当这个 Object 包 Date 类型的成员变量的时候, SpringMVC 在将 String转换成 Date 类型时,就会出错,报异常。但是我们又需要使用 Date 类型的时候,其实 Spring 给我们提供了简单的 *** 作方式可以完成这个任务的。

SpringMVC 提供了一个注解 @DateTimeFormat 。可以将 View 传过来的 String类型转换为 Date 类型。具体使用方式很简单,直接在成员变量上加入注解就可以了,同时还可以指定 format 的格式,如下所示:

public class Person {

private String name;

//直接在date类型上加入注解,同时指定格式样式

@DateTimeFormat( pattern = "yyyy-MM-dd" )

private Date birthday;

//setterAndGetter

}

至此,不要以为完事大吉了,你还需要完成以下两个步骤才可以。

第一需要加入 joda 的 jar 包。因为在 @DateTimeFormat 注解中使用到了 joda 包中的相关东西,所以缺少这个包也是会报异常的。如果使用的直接导入 jar 包的话,去下载 joda-Jar 导入即可,如果使用的是 Maven 管理项目的 jar ,那么在配置文件文件中加入依赖:

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time</artifactId>

<version>23</version>

</dependency>

第二需要在 SpringMVC 配置 xml 文件中(一般是 dispatchServletxml 文件)中加入配置: <mvc:annotation-driven /> 。这一句配置是一种简写,其实是给 spring 容器中注入了两个 Bena ,分别是: DefaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter 。 @DateTimeFormat 注解的内部同样需要使用到前面注入的两个 bean 去处理,所以缺少这个配置, Spring 容器中没有对应的 bean 去处理注解同样也会报错。至此,所有的步骤都完成了,可以跑了。

接下来我们跑跑测试一下,测试过程:

首先需要一个表单 :

<form action="test" method="post">

<input type="text" name="name">

<input type="text" name="birthday">

<input type="submit" name="提交">

</form>

用一个 Controller 接收:

@RequestMapping( "/test" )

public ModelAndView test(>

以上就是关于SSM框架中继承了接口的类让Spring管理为什么不能自动注入全部的内容,包括:SSM框架中继承了接口的类让Spring管理为什么不能自动注入、ssm框架访问控制应该怎么做、SSM dao层不写实现类,比如这篇文章http://blog.csdn.net/gebitan505/article/details/44455235/等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9558400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存