1. 程式人生 > >3.IOC的實現(配置方式)

3.IOC的實現(配置方式)

一.開發步驟

1.新增依賴

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
  </dependencies>

2.配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    <bean id="user" class="User"/>
</beans>

3.編寫類和方法

public class User {
    public void add(){
        System.out.println("user add......");
    }
}

4.測試

public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
        User user = (User)applicationContext.getBean("user");
        user.add();
    }

二.bean管理

1.使用配置檔案建立物件所進的bean的例項化方式,最常用的是使用類中無參建構函式建立,類中必須要有預設的無參建構函式 2.bean標籤的常用屬性

  1. id 物件的名稱
  2. class 物件類的全限定名稱
  3. scope 物件的範圍(singleton,propertype)

三.屬性注入

1.getter和setter方式注入

<bean id="user" class="User">
    <property name="username" value="steven"/>
</bean>

public class User {
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
        User user = (User)applicationContext.getBean("user");
        System.out.println(user.getUsername());
}

2.建構函式方式注入

<bean id="user" class="User">
    <constructor-arg value="steven"/>
</bean>

public class User {
    private String username;

    public User(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }
}

public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
        User user = (User)applicationContext.getBean("user");
        System.out.println(user.getUsername());
    }

3.物件型別方式注入

public class UserDao {
    public void add(){
        System.out.println("UserDao...");
    }
}
public class UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add(){
        userDao.add();
    }
}

<bean id="userDao" class="UserDao"/>
<bean id="userService" class="UserService">
     <property name="userDao" ref="userDao"/>
</bean>

public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
        UserService userService = (UserService)applicationContext.getBean("userService");
        userService.add();
}