JavaEE--spring-基於註解的IOC注入配置
阿新 • • 發佈:2019-02-01
下面我來介紹一下另一種使用在Spring框架下的IOC注入方式:
基於註解的IOC.它是通過配置註解來部分或全部取代xml配置檔案.作用與xml是一樣的.
一.IOC註解演示
1.建立專案.引入Jar包
2.建立配置檔案 bean.xml
引入約束.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> </beans>
3.在spring配置檔案中開啟對註解IOC的支援.
在bean.xml中加入
<!-- 告知spring在建立容器時掃描指定位置的包下的類建立物件並存入容器 -->
<context:component-scan base-package="cn.asiainfo"></context:component-scan>
4.建立業務層介面和實現類.
public interface orderService { public void saveOrder(); } @Component(value="orderService")//相當於bean標籤確定實現類與介面關係. public class orderServiceImpl implements OrderService { @Resource(name="orderDao")//直接按照bean的id注入 private OrderDao orderDao; @Override public void saveOrder() { System.out.println("業務層儲存訂單"); orderDao.saveOrder(); } }
5.建立持久層介面和實現類
public interface OrderDao {
public void saveOrder();
}
@Component(value = "orderDao")
public class OrderDaoImpl implements OrderDao {
@Override
public void saveOrder() {
System.out.println("持久層儲存訂單");
}
}
6.建立測試類
public class Test01 { @Autowired private OrderService orderService; @Test public void test() { //獲取容器 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //獲得物件 orderService = (OrderService) ac.getBean("orderService"); orderService.saveOrder(); } }
7.測試結果:
8.結果分析:
通過配置檔案自動建立獲取容器.然後從容器中通過自動注入拿到service物件.呼叫dao層.dao層同樣採用自動注入物件.呼叫方法.
二.IOC常用相關注解
1.用於建立物件的. 等同於xml中的<bean id="" class="">
@Component(value="bean的id")
@Controller(value="可以不寫") //表現層註解
@Service(value="可以不寫") //業務層註解
@Repository(value="可以不寫") //持久層註解
2.用於注入資料. 等同於<property name="" ref="" >/<property name="" name="" >
@Autowired //自動按型別注入
@Qualifier(id="") //除了按型別注入,附加按id注入.更加詳細
@Resource(id="") //直接按照id注入
3.改變作用範圍的 等同於<bean id="" scope="">
@Scope(value="單例/多例/...")
喜歡這篇文章或對你有幫助請點贊關注哦~~