天天看點

spring依賴注入Spring

Spring

針對web的開發元件。

核心容器(控制反轉IOC),整合,AOP

對象的建立控制權有程式轉交給外部送出,這種思想稱為反轉控制

ioc容器負責對象的建立初始化,被建立或者被管理的對象在ioc中成為BeanDI

注入依賴

  • 注入資料的三種資料類型 普通資料類型 引用資料類型 集合資料類型

在容器中建立bean與bean之間的依賴關系的整個過程,稱為依賴注入。

在pom.xml中引入spring架構:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.8.RELEASE</version>
</dependency>
           

set依賴注入:修改xml中的資料

<bean id="bookdao" class="com.zx.dao.impl.BookDaoImpl"/>
<!--<bean id="bookservice" class="com.zx.service.impl.BookServiceImpl">-->
<!--        <property name="ibookdao" ref="bookdao"></property>-->
<!--    </bean>-->
           

在service中書寫set方法

public class BookServiceImpl implements IBookService {
    private IBookDao ibookdao;

    public void setIbookdao(IBookDao ibookdao) {
        this.ibookdao = ibookdao;
    }

    public void save() {
        ibookdao.save();
        System.out.println("book service........");
    }
}
           

實作類:

public class App {
    public static void main(String[] args) {
//        System.out.println("hello maven!");
        ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        IBookService bookservice = (IBookService)ctx.getBean("bookservice");
        bookservice.save();
    }
}
           

p命名空間注入(類似于set注入)

首先,需要引入P命名空間:

xmlns:p="http://www.springframework.org/schema/p"
           
spring依賴注入Spring

構造方法注入

建立有參構造

public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public UserServiceImpl() {
    }

    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void save() {
        userDao.save();
    }
}
           

ApplicationContext中修改

<bean id="bookservice" class="com.zx.service.impl.BookServiceImpl">
    <constructor-arg name="ibookdao" ref="bookdao"></constructor-arg>
</bean>
           

修改service實作類中代碼:

public class BookServiceImpl implements IBookService {
    private IBookDao ibookdao;

    public BookServiceImpl() {

    }

    public BookServiceImpl(IBookDao ibookdao) {
        this.ibookdao = ibookdao;
    }
/*
     private IBookDao ibookdao;
    public void setIbookdao(IBookDao ibookdao) {
        this.ibookdao = ibookdao;
    }
    這個為set構造或者p命名空間構造
    */
    public void save() {
        ibookdao.save();
        System.out.println("book service........");
    }
}