1.用于注入数据的注解
* 用于注入数据的注解
* 作用和在XML中<bean>标签中写<property></property>标签是一样的
* Autowired:
* 作用:自动按照类型注入,只要容器中有唯一一个bean对象类型和要注入的变量类型匹配,就能注入成功
* 如果有多个匹配,会按照变量名作为id查找,如(private IAccountDao accountDao = null;)中的accountDao
* 出现位置:变量上、方法上
* 细节:在使用注解注入时,set方法就不是必须的了
* Qualifier:
* 作用:在按照类型注入的基础上再按照名称注入.在给成员变量注入时不能单独使用,但是在给方法参数注入时可以单独使用
* 属性:value用于指定要注入的id
*
* Resource
* 作用:直接按照bean的id注入,可以独立使用
* 属性:name指定bean的id
* 以上只能注入其他bean类型的数据,而基本数据类型和String数据类型无法使用上述注解实现
* 另外,集合类型注入只能通过XML实现
*
* Value
* 作用:用于注入基本类型和String类型的数据
* 属性:value用于指定数据的值,可以使用SpEL ${表达式}
@Service(value="accountService")
public class AccountServiceImpl implements IAccountService {
@Resource(name="accountDao")
private IAccountDao accountDao = null;
public AccountServiceImpl(){
System.out.println("AccountServiceImpl创建了");
}
public void saveAccount() {
accountDao.saveAccount();
}
}
2.用于改变作用范围的注解
* 用于改变作用范围的注解
* 作用和在bean标签中使用scope属性是一样的
* Scope
* 作用:用于指定bean的作用范围
* 属性:value:指定范围的取值.常用取值:singleton prototype
@Service(value="accountService")
@Scope("prototype")
public class AccountServiceImpl implements IAccountService {
@Resource(name="accountDao")
private IAccountDao accountDao = null;
public AccountServiceImpl(){
System.out.println("AccountServiceImpl创建了");
}
public void saveAccount() {
accountDao.saveAccount();
}
}
3.和声明周期相关的注解
* 和声明周期相关的注解
* 作用和在bean标签中使用init-method和destory-method是一样的
* PreDestory:用于指定销毁方法
* PostConstruct:用于指定初始化方法
@Service(value="accountService")
public class AccountServiceImpl implements IAccountService {
@Resource(name="accountDao")
private IAccountDao accountDao = null;
public AccountServiceImpl(){
System.out.println("AccountServiceImpl创建了");
}
public void saveAccount() {
accountDao.saveAccount();
}
@PreDestroy
public void destory(){
System.out.println("销毁");
}
@PostConstruct
public void init(){
System.out.println("初始化");
}
}