Spring,Hibernate注解

<context:component-scan/>指定Bean扫描的包,多个包逗号隔开,任何标注了@Component,@Controller,@Service,@Repository的类,

都会被自动识别为bean。

Spring2.5注解介绍(3.0通用)http://www.iteye.com/topic/973726

参考:

参考:

Spring注解入门:http://www.iteye.com/topic/295348

http://sducxh.iteye.com/blog/639761

http://zhangli-lisa.iteye.com/blog/604747

@Autowired默认按类型装配,@Resource默认按名称装配,当找不到名称匹配的bean才会按类型装配。

@Autowired

-------------------------------------------------------

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动注入。

@Autowired的标注位置不同,它们都会在Spring在初始化industryService这个bean时,自动装配industryDao这个属性,

区别是:

@Autowired

privateIndustryDaoindustryDao;

第一种实现中,Spring会直接将IndustryDao类型的唯一一个bean赋值给industryDao这个成员变量;

@Autowired

publicvoidsetDao(IndustryDaoindustryDao)

{

super.setDao(industryDao);

}

第二种实现中,Spring会调用setDao方法来将IndustryDao类型的唯一一个bean装配到industryDao这个属性。

@Autowired是根据类型进行自动注入的,如果spring配置文件中存在多个IndustryDao类型的bean时,或者不存在IndustryDao类型的bean,都会抛出异常。

@Resource

-------------------------------------------------------

spring支持@Resource、@PostConstruct以及@PreDestroyJSR-250的标准注解。

@Resource可以按type注入,也可以按name注入。@Resource默认按byName自动注入。

Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

@Resource装配顺序

如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(见2);如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配;

@Component

-------------------------------------------------------

虽然我们可以通过@Autowired或@Resource在Bean类中使用自动注入功能,但是Bean还是在XML文件中通过<bean>进行定义——也就是说,在XML配置文件中定义Bean,通过@Autowired或@Resource为Bean的成员变量、方法入参或构造函数入参提供自动注入的功能。能否也通过注释定义Bean,从XML配置文件中完全移除Bean定义的配置呢?答案是肯定的,我们通过Spring2.5提供的@Component注释就可以达到这个目标了。

在使用@Component注释后,Spring容器必须启用类扫描机制以启用注释驱动Bean定义和注释驱动Bean自动注入的策略。

@Scope

-------------------------------------------------------

一般情况下,Bean都是singleton的,需要注入Bean的地方仅需要通过byType策略就可以自动注入了,所以大可不必指定Bean的名称。如果需要使用其它作用范围的Bean,可以通过@Scope注释来达到目标。

@PostConstruct和@PreDestroy

-------------------------------------------------------------------------

Spring容器中的Bean是有生命周期的,Spring允许在Bean在初始化完成后以及Bean销毁前执行特定的操作,您既可以通过实现InitializingBean/DisposableBean接口来定制初始化之后/销毁之前的操作方法,也可以通过<bean>元素的init-method/destroy-method属性指定初始化之后/销毁之前调用的操作方法。

@PostConstruct注释的方法将在类实例化后调用,而标注了@PreDestroy的方法将在类销毁之前调用。

相关推荐