spring 注解@service (service )括号中的service 有什么⽤service  是有⽤的相当于 xml 配置中得bean  id = service  也可以不指定 不指定相当于 bean id =  com. service.service 就是这个类的全限定名,表⽰给当前类命名⼀个别名,⽅便注⼊到其他需要⽤到的类中;不加的话,默认别名就是当前类名,但是⾸字母⼩写
注⼊⽅式:
把DAO 实现类注⼊到service 实现类中,把service 的接⼝(注意不要是service 的实现类)注⼊到action 中,注
⼊时不要new 这个注⼊的类,因为spring 会⾃动注⼊,如果⼿动再new 的话会出现错误,然后属性加上
@Autowired 后不需要getter()和setter()⽅法,Spring 也会⾃动注⼊。⾄于更具体的内容,等对注⼊的⽅式更
加熟练后会做个完整的例⼦上来。
注解:
在 spring 的配置⽂件⾥⾯只需要加上<context:annotation-config/>和<context:component-scanbase-package="需要实现注⼊的类所在包"/>,[html]
1. @Service
2. public class VentorServiceImpl implements iVentorService{
3. }
4.
5. Repository
6. public class VentorDaoImpl implements iVentorDao {resource和autowired注解的区别
7. }
[html]
1. getBean 的默认名称是类名(头字母⼩写),如果想⾃定义,可以@Service(“aaaaa”)这样来指定,这种bean 默认是单例的,
[html]
1. 如果想改变,可以使⽤
[html]
1. @Service(“beanName”)
[html]
1. @Scope(“prototype”)来改变。可以使⽤以下⽅式指定初始化⽅法和销毁⽅法(⽅法名任意):
[html]
1. @PostConstruct  [html]
1. public void init() {
2.  }
3.
4.  @PreDestroy
5.  public void destory() {
6.  }
可以使⽤base-package="*"表⽰全部的类。
< context:component-scan base-package=”ic.spring”>
其中base-package为需要扫描的包(含所有⼦包)
在接⼝前⾯标上@Autowired和@Qualifier注释使得接⼝可以被容器注⼊,当接⼝存在两个实现类的时候必须指定其中⼀个来注⼊,使⽤实现类⾸字母⼩写的字符串来注⼊,如:
@Autowired
@Qualifier("chinese")
private Man man;
否则可以省略,只写@Autowired  。
@Service服务层组件,⽤于标注业务层组件,表⽰定义⼀个bean,⾃动根据bean的类名实例化⼀个⾸写字母为⼩写的bean,
例如Chinese实例化为chinese,如果需要⾃⼰改名字则:@Service("你⾃⼰改的bean名")。
@Controller⽤于标注控制层组件(如struts中的action)
@Repository持久层组件,⽤于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使⽤这个注解进⾏标注。
@Service
public class VentorServiceImpl implements iVentorService {
}
@Repository
public class VentorDaoImpl implements iVentorDao {
}
getBean 的默认名称是类名(头字母⼩写),如果想⾃定义,可以@Service(“aaaaa”) 这样来指定,这种
bean默认是单例的,如果想改变,可以使⽤@Service(“beanName”)@Scope(“prototype”)来改变。
可以使⽤以下⽅式指定初始化⽅法和销毁⽅法(⽅法名任意):
@PostConstruct
public void init() {
}
@PreDestroy
public void destory() {
}
BY  ON 2011年 06 ⽉ 02 ⽇ IN
Spring不但⽀持⾃⼰定义的@Autowired注解,还⽀持⼏个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以
及@PreDestroy。
@Resource的作⽤相当于@Autowired,只不过@Autowired按byType⾃动注⼊,⽽@Resource默认按 byName⾃动注⼊罢
了。@Resource有两个属性是⽐较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,⽽type属性则解析为bean的类型。所以如果使⽤name属性,则使⽤byName的⾃动注⼊策略,⽽使⽤type属性时则使⽤byType⾃动注⼊策略。如果既不指定name也不指定type属性,这时将通过反射机制使⽤byName⾃动注⼊策略。
@Resource装配顺序
1. 如果同时指定了name和type,则从Spring上下⽂中到唯⼀匹配的bean进⾏装配,不到则抛出异常
2. 如果指定了name,则从上下⽂中查名称(id)匹配的bean进⾏装配,不到则抛出异常
3. 如果指定了type,则从上下⽂中到类型匹配的唯⼀bean进⾏装配,不到或者到多个,都会抛出异常
4. 如果既没有指定name,⼜没有指定type,则⾃动按照byName⽅式进⾏装配;如果没有匹配,则回退为⼀个原始类型进⾏匹配,如果匹配则⾃动装配;
@Autowired 与@Resource的区别:
1、 @Autowired与@Resource都可以⽤来装配bean.都可以写在字段上,或写在setter⽅法上。
2、 @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false),如果我们想使⽤名称装配可以结合@Qualifier注解进⾏使⽤,如下:
1@Autowired()@Qualifier("baseDao")
2private BaseDao baseDao;
3、@Resource(这个注解属于J2EE的),默认安装名称进⾏装配,名称可以通过name属性进⾏指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进⾏安装名称查,如果注解写在setter⽅法上默认取属性名进⾏装配。当不到与名称匹配的bean时才按照类型进⾏装配。但是需要注意的是,如果name属性⼀旦指定,就只会按照名称进⾏装配。
1@Resource(name="baseDao")
2private BaseDao baseDao;
推荐使⽤:@Resource注解在字段上,这样就不⽤写setter⽅法了,并且这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起就⽐较优雅。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。