我不确定我是否可以在帖子中提出多个问题,但现在是,
例如我有以下内容,
控制器
@Controller
public class FooController{
@Autowired
private FooService fooService;
@RequestMapping(value="/foo", method=RequestMethod.POST)
public @ResponseBody foo(@RequestBody FooRequest request){
}
}
@Controller
public class BarController{
@Autowired
private FooService fooService;
@RequestMapping(value="/bar", method=RequestMethod.POST)
public @ResponseBody bar(@RequestBody FooRequest request){
}
}
服务
public class FooService{
private Foo foo;
public Foo getFoo() {
return foo;
}
public void setFoo(Foo foo) {
this.foo = foo;
}
public String doFoo(String str){
return foo.doFoo(str);
}
}
上课的工作
public class Foo{
public String doFoo(String str){
return (str + " is foo");
}
}
使用依赖注入创建bean
<context:annotation-config/>
<bean id="fooService" class="com.myapp.service.FooService">
<property name="foo" ref="foo"></property>
</bean>
<bean id="foo" class="com.myapp.foo.Foo">
</bean>
我的问题是:
@service
上使用FooService
注释,我应该使用它吗?为什么?答案 0 :(得分:4)
答案 1 :(得分:1)
答案 2 :(得分:1)
@ Repository,@ Service或@Controller(@Components的子注释)用于标记特定的类,因此可以将它们或多或少地视为元数据。但是,Spring框架的一些功能可以利用这些功能。其中之一是自动组件扫描(将使用上述注释搜索给定的Java包,这些类可以用作Spring bean,就好像它们是用XML声明的一样)。要启用此功能,您应该将其放入弹簧上下文中:
<context:component-scan base-package="my.service.package"/>
有关详细信息,请访问:http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-classpath-scanning
另一个用例是AOP。您可以创建注释感知切入点,您可以通过它选择所有存储库类。
上下文中的Spring bean是逐个引发的,所以没有并发机会。但是,bean之间可能存在循环依赖关系,Spring可能会或者可能无法正确解决这个问题。
对于DAO和服务的东西,当前的Spring 3文档提供了许多示例,可能是学习的最佳来源:http://static.springsource.org/spring/docs/3.0.x/reference/index.html如果您想获得全面的知识,我建议使用Hibernate尝试JdbcTemplate,Rowmappers和基于ORM的配置。