Spring--IOC容器——對象依賴關(guān)系(注解)

注解方式可以簡化spring的IOC容器的配置!

使用注解步驟:

  • 1)先引入context名稱空間
    xmlns:context="http://www.springframework.org/schema/context"
  • 2)開啟注解掃描
    <context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>
  • 3)使用注解
    通過注解的方式,把對象加入ioc容器。
    創(chuàng)建對象以及處理對象依賴關(guān)系,相關(guān)的注解:
    @Component指定把一個(gè)對象加入IOC容器
    @Repository作用同@Component; 在持久層使用
    @Service 作用同@Component; 在業(yè)務(wù)邏輯層使用
    @Controller作用同@Component; 在控制層使用
    @Resource屬性注入

總結(jié):
1) 使用注解,可以簡化配置,且可以把對象加入IOC容器,及處理依賴關(guān)系(DI)
2) 注解可以和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:p="http://www.springframework.org/schema/p"
       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 " >

<!--開啟注解掃描-->
    <context:component-scan base-package="com.huan"></context:component-scan>

</beans>

UserDao.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Component("userDao") //相當(dāng)于 bean.xml[<bean id =userDao class="com.huan.BeanTest.UserDao">]
public class UserDao {
    public void save(){
        System.out.println("db:操作數(shù)據(jù)庫");
    }
}

UserService.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Component("userService")//userService對象,注入到ioc容器
public class UserService {
    //從IOC容器中找到userDao對象,注入到當(dāng)前字段
    /**
     * <bean id =userDao class="com.huan.BeanTest.UserDao">
     *  <property name = "userDao" ref ="userDao" ></property> 相當(dāng)于 @Resource(name = "userDao")
     *
     *  </bean>
     */
    @Resource(name = "userDao")
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void save(){
        userDao.save();
    }
}

UserAction.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;


import javax.annotation.Resource;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Component("userAction")
public class UserAction {
    @Resource(name = "userService")
    private UserService userService;
    public void execute(){
        userService.save();
    }
}


創(chuàng)建user對象

 @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("userAction");
        userAction.execute();
方法二

注解:

<?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:p="http://www.springframework.org/schema/p"
       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 " >

<!--開啟注解掃描-->
    <context:component-scan base-package="com.huan"></context:component-scan>

</beans>

UserDao.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Component
public class UserDao {
    public void save(){
        System.out.println("db:操作數(shù)據(jù)庫zui");
    }
}


UserService.java


package com.huan.BeanTest;

import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Component
public class UserService {
    
    @Resource//根據(jù)類型查找·[在容器中,該類型只有一個(gè)變量]
    private UserDao userDao;
    public void save(){
        userDao.save();
    }
}

UserAction.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;


import javax.annotation.Resource;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Component
public class UserAction {
    @Resource
    private UserService userService;
    public void execute(){
        userService.save();
    }
}

創(chuàng)建user對象

 @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("userAction");
        userAction.execute();
方法三

注解:

<?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:p="http://www.springframework.org/schema/p"
       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 " >

<!--開啟注解掃描-->
    <context:component-scan base-package="com.huan"></context:component-scan>

</beans>

UserDao.java

package com.huan.BeanTest;

import org.springframework.stereotype.Repository;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Repository
public class UserDao {
    public void save(){
        System.out.println("db:操作數(shù)據(jù)庫zui");
    }
}



UserService.java


package com.huan.BeanTest;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Service
public class UserService {

    @Resource
    private UserDao userDa;
    public void save(){
        userDa.save();
    }
}

UserAction.java

package com.huan.BeanTest;

import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

/**
 * Created by 馬歡歡 on 2017/6/24.
 */
@Controller
public class UserAction {
    @Resource
    private UserService userService;
    public void execute(){
        userService.save();
    }
}

創(chuàng)建user對象

 @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("userAction");
        userAction.execute();
image.png

上一篇:Spring--IOC容器——對象依賴關(guān)系(構(gòu)造函數(shù)、set方法、p名稱空間、自動(dòng)裝配)

文集:Spring框架學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容