使用注解方式可以很快的配置出Spring-mvc,用法要比xml方式简单,理论上xml中只需要配置两部:
<mvc:annotation-driven/>
<!--开启注解方式 -->
<context:component-scanbase-package="com.tf.edu.spring.controller"/>
<!--指定 注解扫描路径 -->
XML中是不是少了很多行东西呢!没错这些缺少的方式都需要通过注解来配置
@Controller这个注解是用来表示Controller控制器的,所以我们在我们的类中加入一个Controller注解
@RequestMapping这个注解用来表示一个地址栏路径
@Controller
public class NoteAction{
@RequestMapping(value="/demoA")
public String demoA()throws Exception {
return"Demo/DemoA.jsp";
}
}
这时候我们就可以通过 url/工程名/demoA来访问了
如果想给这个类下的所有方法都加一层地址,可以在类上加一个@RequestMapping
@RequestMapping用法很多
@Controller
@RequestMapping("/bbtForum.do")
public class BbtForumController {
@RequestMapping(params ="method=listBoardTopic")
public String listBoardTopic(@RequestParam("id")int topicId,User user) {
bbtForumService.getBoardTopics(topicId);
System.out.println("topicId:"+topicId);
System.out.println("user:"+user);
System.out.println("calllistBoardTopic method.");
return"listTopic";
}
}
这段代码用用来访问method参数=listBoardTopic的请求/bbtForum.do?method=listBoardTopic通过参数来进行匹配
这里我们要引入一个新的概念,就是service(业务)层,完成一个功能不一定只需要访问一次Dao层就可以实现,所以我们把一个完整的功能封装成service层来使用
@Service("baseService")
public class BaseServiceImimplements BaseService{
@Resource(name="baseDao")
//@service此注解用来实例化bean,用法和Component 一样但具有语义化
private BaseDao dao;
//注入注解,将baseDao注入到service中
@Override
publicvoid textService() {
dao.save();
}
}
然后通过@Resource(name="baseService")将这个属性注入到Controller中,通过注入属性来调用方法
然后我们来看一下Dao层,不说了先上代码,再说
@Repository(value ="baseDao")
//用来申明这个时候Dao,用来实例化bean,作用和Component一样但具有语义化
public class BaseDaoImimplements BaseDao {
Loggerlogger = LogManager.getLogger(BaseDaoIm.class);
private SqlSession sqlSession;
@Resource(name="sqlSessionFactory")
//这里注入sqlSessionFactory的工程bean在spring.xml中定义的
publicvoid setSqlSessionFactory(SqlSessionFactorysqlSessionFactory) {
this.sqlSession=new SqlSessionTemplate(sqlSessionFactory);
//这里讲工厂类生成sqlSession模板
}
@Override
publicvoid save() {
//dao层代码,这里更具业务需求来写,我是瞎写的
int n=sqlSession.selectOne("all_num");
System.out.println("sql_find_count="+n);
}
}