Spring :bean管理的常用註解
A…@Component註解
作用: 把資源讓spring來管理。相當於在xml中配置一個bean。 屬性: value:指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。首字母小寫。
2…@Controller @Service @Repository 三個註解都是針對一個的衍生註解,他們的作用及屬性都是一模一樣的。
@Controller:一般用於表現層的註解。
@Service:一般用於業務層的註解。
@Repository:一般用於持久層的註解。
B…注入資料 相當於:
<property name= ref=""> <property name= value="">
[email protected] 作用: 注入基本資料型別和String型別資料的 屬性: value:用於指定值 [email protected](重點) 作用:
自動按照型別注入。當使用註解注入屬性時,set方法可以省略。它只能注入其他bean型別。當有多個型別匹配時,使用要注入的物件變數名稱作為bean的id,在spring容器查詢,找到了也可以注入成功。找不到就報錯。
@Service("userService") public class UserServiceImpl implements UserService{ @Value("張三") private String name; @Autowired private UserDao userDao; @Override public void save() { System.out.println("業務層:使用者儲存"); System.out.println("使用者名稱:" + name); userDao.save(); } }
作用: 在自動按照型別注入的基礎之上,再按照Bean的id注入。它在給欄位注入時不能獨立使用,必須和@Autowire一起使用;但是給方法引數注入時,可以獨立使用。 屬性: value:指定bean的id。
public class UserServiceImpl implements UserService { @Autowired @Qualifier("userDao2") private UserDao userDao; @Override public void save() { System.out.println("業務層:使用者儲存"); userDao.save(); } }
作用: 直接按照Bean的id注入。它也只能注入其他bean型別。 屬性: name:指定bean的id。
//@Autowired
// @Qualifier("userDao2")
@Resource(name="userDao2")
private UserDao userDao;
5…@Scope
作用: 指定bean的作用範圍。 屬性: value:指定範圍的值。 取值:singleton prototype request session globalsession
@Scope("prototype")
public class UserServiceImpl implements UserService{
@Value("張三")
private String name;
// @Autowired
// @Qualifier("userDao2")
@Resource(name="userDao2")
private UserDao userDao;
@Override
public void save() {
System.out.println("業務層:使用者儲存");
System.out.println("使用者名稱:" + name);
userDao.save();
}
}
6…@PostConstruct註解 @PostConstruct加在方法上,指定bean物件建立好之後,呼叫該方法初始化物件,類似於xml的init-method方法
@PostConstruct
public void init(){
System.out.println("呼叫了init方法");
}
7…@PreDestory註解
@PreDestory加在方法上,指定bean銷燬之前,呼叫該方法,類似於xml的destory-method方法
@PostConstruct
public void init(){
System.out.println("呼叫了init方法");
}
C .XML和註解的比較