spring IOC

1. xml方式實現IOC

這裏寫圖片描述

beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

     <bean id="id_personDao" class="cn.sjtu.service.PersonDao" /> 

     <!-- scope="prototype" lazy-init="true -->
    <bean id="id_personService" class="cn.sjtu.service.PersonServiceBean" 
        init-method="init" destroy-method="destroy">

        <property name="personDao" ref="id_personDao"></property>

        <constructor-arg index="0" ref="id_personDao"></constructor-arg>
        <constructor-arg index="1" value="chen"></constructor-arg>

        <property name="sets">
            <set>
                <value>"AA"</value>
                <value>"BB"</value>
                <value>"CC"</value>
            </set>
        </property>
         <property name="lists">
            <set>
                <value>"AAA"</value>
                <value>"BBB"</value>
                <value>"CCC"</value>
            </set>
        </property>
        <property name="maps">
            <map>
                <entry key="key1" value="value1"></entry>
                <entry key="key2" value="value2"></entry>
                <entry key="key3" value="value3"></entry>
            </map>
        </property>
    </bean>


</beans>

PersonDao.java

package cn.sjtu.service;

public class PersonDao {
    public void add() {
        System.out.println("this is PersonDao add method");
    }
}

PersonService.java

package cn.sjtu.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface PersonService {

    public abstract void save();
    public abstract void add();
    public abstract Set<String> getSets();
    public abstract List<String> getLists();
    public abstract Map<String, String> getMaps();
}

PersonServiceBean.java

package cn.sjtu.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class PersonServiceBean implements PersonService {

    private String name;
    private PersonDao personDao;
    private Set<String> sets = new HashSet<String>();
    private List<String> lists = new ArrayList<String>();
    private Map<String, String> maps = new HashMap<String, String>();

    public Map<String, String> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }

    public List<String> getLists() {
        return lists;
    }

    public void setLists(List<String> lists) {
        this.lists = lists;
    }

    public Set<String> getSets() {
        return sets;
    }

    public void setSets(Set<String> sets) {
        this.sets = sets;
    }

    public PersonDao getPersonDao() {
        return personDao;
    }

    public void setPersonDao(PersonDao personDao) {
        this.personDao = personDao;
    }

    @Override
    public void save() {
        System.out.println("this is save method");
    }

    public PersonServiceBean() {
        System.out.println("instanced");
    }

    public PersonServiceBean(PersonDao personDao, String name) {
        System.out.println("instanced2"+name);
        personDao.add();
    }

    public void init() {
        System.out.println("this is init method");
    }

    public void destroy() {
        System.out.println("this is destroy method");
    }

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

test1.java

package cn.sjtu.spring.test;

import static org.junit.Assert.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.sjtu.service.PersonService;

public class test1 {

    @Test
    public void instanceSpring() {
        AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        PersonService personServiceInstance = (PersonService) ctx.getBean("id_personService");

        /*personServiceInstance.add();
        Set<String> sets = personServiceInstance.getSets();
        List<String> lists = personServiceInstance.getLists();
        Map<String, String> maps = personServiceInstance.getMaps();
        System.out.println(sets.toString());
        System.out.println(lists.toString());
        System.out.print(maps.toString());*/


        ctx.close();
    }

}

2. 註釋方式實現IOC
這裏寫圖片描述

beans.xml

<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-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
       <context:annotation-config/>


      <context:component-scan base-package="cn.sjtu"/> <!--這種方法配合component連bean都不用寫 -->

       <!--   
       <bean id="id_personDao" class="cn.sjtu.service.PersonDao" />

       <bean id="id_personService" class="cn.sjtu.service.PersonServiceBean" /> 
        -->   

</beans>

PersonDao.java

package cn.sjtu.service;

import org.springframework.stereotype.Component;

@Component("id_personDao")
public class PersonDao {
    public void add() {
        System.out.println("this is PersonDao add method");
    }
}

PersonService.java

package cn.sjtu.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface PersonService {

    public abstract void save();
    public abstract void add();

}

PersonServiceBean.java

package cn.sjtu.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

import org.springframework.stereotype.Component;

@Component("id_personService")
public class PersonServiceBean implements PersonService {

    private String name;
    @Resource(name="id_personDao") private PersonDao personDao; //不需要get,set方法
    private Set<String> sets = new HashSet<String>();
    private List<String> lists = new ArrayList<String>();
    private Map<String, String> maps = new HashMap<String, String>();

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void save() {
        System.out.println("this is save method");
    }

    public PersonServiceBean() {
        System.out.println("instanced");
    }

    public PersonServiceBean(PersonDao personDao, String name) {
        System.out.println("instanced2"+name);
        personDao.add();
    }

    @PostConstruct
    public void init() {
        System.out.println("this is init method");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("this is destroy method");
    }

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

test1.java

package cn.sjtu.spring.test;

import static org.junit.Assert.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.sjtu.service.PersonService;

public class test1 {

    @Test
    public void instanceSpring() {
        AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        PersonService personServiceInstance = (PersonService) ctx.getBean("id_personService");

        /*personServiceInstance.add();
        Set<String> sets = personServiceInstance.getSets();
        List<String> lists = personServiceInstance.getLists();
        Map<String, String> maps = personServiceInstance.getMaps();
        System.out.println(sets.toString());
        System.out.println(lists.toString());
        System.out.print(maps.toString());*/

        personServiceInstance.add();
        ctx.close();
    }

}
發佈了227 篇原創文章 · 獲贊 24 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章