IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)
目錄
IOC操作Bean管理注解方式(注入屬性@Autowired、@Qualifier和@Resource)
1.基于注解方式實現(xiàn) 屬性注入
(1)@Autowired:根據(jù)屬性類型進行自動裝配
第一步:
第二步:
(2)@Qualifier:根據(jù)屬性名稱進行注入
測試:
(3)@Resource:可以根據(jù)類型注入、也可以根據(jù)名稱注入
(4)@Value:注入普通類型屬性
測試:
IOC操作Bean管理注解方式(注入屬性@Autowired、@Qualifier和@Resource)
?
1.基于注解方式實現(xiàn) 屬性注入
(1)@Autowired:根據(jù)屬性類型進行自動裝配
結(jié)構(gòu)圖:
?
第一步:
把service 和 dao 對象進行創(chuàng)建,在 service 和 dao 類添加 創(chuàng)建對象注解
UserService類中代碼如下:
package com.lbj.spring5.service;import org.springframework.stereotype.Service;//開啟注解 @Service public class UserService {public void add(){System.out.println("UserService is open");} }?UserDao接口類代碼如下:
package com.lbj.spring5.dao;public interface UserDao {public void add();}?UserDaoImpl類中代碼如下:
package com.lbj.spring5.dao;import org.springframework.stereotype.Repository;@Repository public class UserDaoImpl implements UserDao{@Overridepublic void add() {System.out.println("addmethod is open");} }?
第二步:
在service 注入dao 對象,在service類添加 dao 類型屬性,在屬性上面使用注解就可以做到注入dao 對象
注意:不需要添加set方法,因為注解已經(jīng)進行封裝
?
?UserService類的代碼如下:
package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service;@Service public class UserService {//依舊是set注入,定義dao類型屬性,但是不需要添加set方法//添加注入屬性 注解 @Autowiredprivate UserDao userDao;public void add(){System.out.println("UserService is open");//調(diào)用效果userDao.add();} }測試:
?
?
(2)@Qualifier:根據(jù)屬性名稱進行注入
這個@Qualifier注解的使用,需要和上面的@Autowired一起使用
原因:因為只有 根據(jù)唯一的名稱才可以準確找到屬于哪一個類(畢竟一個接口一般是有多個實現(xiàn)類的)
演示:?
?
?
測試:
?
(3)@Resource:可以根據(jù)類型注入、也可以根據(jù)名稱注入
根據(jù)類型注入:UserService類中代碼如下:
package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao; import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service public class UserService {@Resource //根據(jù)類型進行注入private UserDao userDao;public void add(){System.out.println("UserService is open");//調(diào)用效果userDao.add();} }?
根據(jù)名稱注入:?UserService類中代碼如下:
package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao; import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service public class UserService {@Resource(name = "userDaoImpl01") //根據(jù)名稱進行注入private UserDao userDao;public void add(){System.out.println("UserService is open");//調(diào)用效果userDao.add();} }?
需要注意:@Resource 的 引入的包是在java的擴展包 javax中,本身不是Spring里面的,因此官方不建議用這個注解
?
?
(4)@Value:注入普通類型屬性
package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service public class UserService {@Value(value = "abc")private String name;public void add(){System.out.println("UserService is open"+name);//調(diào)用效果userDao.add();} }測試:
?
注意:(1)(2)(3)都是根據(jù)對象進行屬性注入,(4)是根據(jù)普通類型屬性注入
?
?
總結(jié)
以上是生活随笔為你收集整理的IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python绘制动态图表怎么存下来_做动
- 下一篇: python 文本相似度_python实