一、@Autowired
spring2.5引入@Autowired 注解。用于对类的成员变量,方法及构造函数进行注入。取代了get、set方法:
// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
// retrieve configured instance
PetStoreService service = context.getBean("petStore", PetStoreService.class);
// use configured instance
List<String> userList = service.getUsernameList();
注解形式
@Autowired 默认byType形式
@Autowired @Qualifier("beanId") 使用byName形式
@Autowired( required=false) 使用byType形式,注入值不存在,可以为null
二、@Resource
JSR-250 注解
注解形式
@Resource 默认byName形式
@Resource(name="loginService") 使用byName形式
@Resource(type="") 使用byType形式
注意:
@Resource 默认byName 注入。name可以是字段名。当找不到匹配的bean才按类型装配。
三、细节问题
@Autowired ( autowire属性 )
byType 发现多个bean或没有,抛异常
byName 指定名称,没有,抛异常
Contructor 没有,抛异常
autodetect 决定默认情况下,用byType还是Contructor
@Resource
跟@Autowired 类似,不过@Resource 默认按照名称式匹配,匹配不成功可以按照类型匹配,当然如果指定了name,则只按名称进行匹配。
@Service
使用组件扫描时,默认将使用此注解的类的第一字母小写作为bean的id生成bean。可以使用@Service("myName"),指定要生成的bean的id。
@Scope
在配置bean时,可以对其作用域进行限制。 默认为singleton,单一实例。也可以设置作用域为 prototype,任意数量的对象实例。
<!-- A bean definition with singleton scope -->
<bean id="..." class="..." scope="singleton">
<!-- collaborators and configuration for this bean go here -->
</bean>
除了,在配置文件中进行配置。还可以使用注解:
@Service("userXxx")@Scope("prototype")
public class UserServiceImpl implements UserXxx {
……
}
在添加注解的相应的类中,如果想初始化或销毁某个方法,我们可以直接在方法上添加注解,如下:
@PostConstruct
public void addItem() {
System.out.println("初始化方法");
}
``` @PreDestroy
public void testItem() {
System.out.println("释放资源");
} ```
来源:oschina
链接:https://my.oschina.net/u/3053700/blog/805112