当迁移到Spring 2.5.x时,我发现它添加了更多的构造型注释(在2.0的 @Repository 之上): @Component,@ Service 和 @Controller 。你怎么用它们?您是否依赖于隐式Spring支持或您定义自定义构造型特定函数/方面/功能?或者它主要用于标记bean(编译时,概念等)?
答案 0 :(得分:13)
2.5中的以下构造型注释可以在Spring MVC应用程序中使用,作为以XML格式连接bean的替代方法:
@Repository - 适用于DAO bean - 允许 你何时抛出DataAccessException 数据源不可用。
@Service - 用于商业bean - 是相当简单的豆类,有一些 默认保留政策已设置。
@Controller - 用于servlet - 允许您设置页面请求 映射等
此外,还引入了通用的第四个注释:@Component。所有MVC注释都是这个注释的特殊化,你甚至可以自己使用@Component,但是在Spring MVC中这样做,你将不会使用任何未来的更高级别注释的优化/功能。您还可以扩展@Component以创建自己的自定义构造型。
以下是操作中MVC注释的快速示例...首先,数据访问对象:
@Repository
public class DatabaseDAO {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
public List<String> getAllRecords() {
return jdbcTemplate.queryForObject("select record from my_table", List.class);
}
}
服务:
@Service
public class DataService {
@Autowired
private DatabaseDAO database;
public List<String> getDataAsList() {
List<String> out = database.getAllRecords();
out.add("Create New...");
return out;
}
}
最后,控制器:
@Controller("/index.html")
public class IndexController {
@Autowired
private DataService dataService;
@RequestMapping(method = RequestMethod.GET)
public String doGet(ModelMap modelMap) {
modelMap.put(dataService.getDataAsList());
return "index";
}
}
除了this article之外,我发现official documentation非常适合广泛概述刻板印象注释。
答案 1 :(得分:3)
注释不再是MVC特定的。有关详细信息,请参阅reference documentation。使用@Component注释或其规范的一个示例是tcServer及其监视支持。有关示例,请参阅here。此监视支持添加了加载时间AspectJ编织。
总结一下,注释可以在Spring容器启动后的运行时在不同的设置中使用,也可以在使用AspectJ编织的编译/加载时使用。
答案 2 :(得分:0)
别忘了在xml上添加此标记
<context:component-scan base-package="com.example.beans"/>