spring mvc注解组件的详解
目录
1.@Controller
在SpringMVC中,控制器Controller负责处理理由DipatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理后封装成一个Model,然后再把改Model返回给对应的View进行展示。在SpringMVC中提供了一个非常简单的定义Controller的方法,你无需继承特定的类或实现特定的接口,只需要使用@Controller标记一个类Controller,然后使用@RequestMapping和@RequestParam等一些注解以定义URL请求和Controller方法方法之间的映射,这样的Controller就能被外界访问到,除外Controller不会Controller不会直接依赖于HttpServletRequest和HttpServletResponse等httpServlet对象,它可以通过Controller的方法参数灵活的获取到。
@Controller
@RequestMapping("/application")
public class ApplicationController extends BaseController {
2.@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@Controller
@RequestMapping("/application")
public class ApplicationController extends BaseController {
private Logger logger = LoggerFactory
.getLogger(ApplicationController.class);
@RequestMapping("/list")
public String listPage() {
return "/frame/system/application/application_list";
}
3.@Service
@Service是告诉Spring,当Spring要创建ApplicationServicelpml的实例时,bean的名字必须叫做“ApplicationService”,这样当Action需要使用ApplicationServicelmpl的实例时,就可以由spring创建好的“ApplicationService”,然后注入给Action:在Action只需要声明一个名字“ApplicationService”的变量来接收Spring注入的“ApplicationService”即可,具体代码如下:
@Service
public class ApplicationServiceImpl implements ApplicationService {
@Autowired
private ApplicationService applicationService;
4.Dao
使用mybatis实现dao层的映射,
在web.xml文件注入:
<!-- 通过扫描的模式,扫描目录在com/newsoft/*目录下,所有的DAO都继承com.newsoft.mybatis.BaseDAO接口的接口 -->
<bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.newsoft,com.litong,com.leatop,ot.component.tree.dao,ot.www.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<property name="markerInterface" value="com.newsoft.common.mybatis.BaseDAO" />
</bean>
编写一个基本的接口 interface BaseDAO,编写继承BaseDAO实现类 interface ApplicationDao extends BaseDAO ,创建一个名字被类名一样的xml的ApplicationDao .xml文件。调用ApplicationDao 类就可以调用了ApplicationDao .xml中语句了。
ApplicationDao .class:
public interface ApplicationDao extends BaseDAO {
/**
* 获取所有应用信息
*
* @return
*/
List<Application> getApplications();
/**
* 根据应用ID获得应用信息
*
* @return
*/
Application getApplicationByAppId(String appId);
ApplicationDao .xml:
<select id="getApplications" resultMap="applicationRM">
select * from FRAME_APPLICATION where 1=1
</select>
<select id="getApplicationByAppId" resultMap="applicationRM">
select * from FRAME_APPLICATION where app_id = #{appId, jdbcType=INTEGER}
</select>
5.@Autowried
默认是按照类型进行装配注入,默认的情况下,它要求依赖的对象必须存在,如果允许为null,可以设置它required为false。
@Autowired
private ApplicationDao applicationDao;
6.Spring的时间Date格式的参数的处理
在spring中时间Date格式,不能自动化赋值给对应的参数。就要额外手动编写一段InitBinder代码已处理一下。对应的controller层写入:
/**
* 切入处理日期类型的值
*
* @param binder
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setLenient(true);
//binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
binder.registerCustomEditor(Date.class, new CustomDateEditorEx(dateFormat, true));
}