Spring学习笔记(二)

    xiaoxiao2021-12-14  17

    1、依赖注入

    在运行期,由外部容器动态地将依赖对象注入到组件中。

    2、依赖注入的方式

    (1)构造器注入

    (2)Set注入

    (3)注解注入

    3、实例

    (1)PersonDao.java

    public interface PersonDao { public void add(); }

    (2)PersonDaoBean.java

    public class PersonDaoBean implements PersonDao { public void add() { System.out.println("PersonDaoBean add"); } }

    (3)PersonService.java

    public interface PersonService { public void save(); public Set<String> getSets(); public List<String> getLists(); public Properties getProperties() ; public Map<String, String> getMaps(); }

    (4)PersonServiceBean.java

    public class PersonServiceBean implements PersonService { private PersonDao personDao; private String name; private Set<String> sets = new HashSet<String>(); private List<String> lists = new ArrayList<String>(); private Properties properties = new Properties(); private Map<String, String> maps = new HashMap<String, String>(); public PersonDao getPersonDao() { return personDao; } public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<String> getSets() { return sets; } public void setSets(Set<String> sets) { this.sets = sets; } public List<String> getLists() { return lists; } public void setLists(List<String> lists) { this.lists = lists; } public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } public Map<String, String> getMaps() { return maps; } public void setMaps(Map<String, String> maps) { this.maps = maps; } public void save(){ System.out.println(name); personDao.add(); } }

    (5)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="personDao1" class="com.spring.dao.impl.PersonDaoBean"></bean> <bean id="personService1" class="com.spring.service.impl.PersonServiceBean"> <!-- 依赖注入:使用属性set方法注入 1)name的值personDao是PersonServiceBean类中的属性 2)ref的值personDao1是bean的id值 --> <property name="personDao" ref="personDao1"></property> </bean> <bean id="personService2" class="com.spring.service.impl.PersonServiceBean"> <property name="personDao"> <!-- 使用内部bean依赖注入,该内部bean不能被其他bean使用 --> <bean class="com.spring.dao.impl.PersonDaoBean"></bean> </property> <property name="name" value="hwd" /> <property name="sets"> <set> <value>第一个</value> <value>第二个</value> <value>第三个</value> </set> </property> <property name="lists"> <list> <value>第一个list元素</value> <value>第二个list元素</value> <value>第三个list元素</value> </list> </property> <property name="properties"> <props> <prop key="key1">value1</prop> <prop key="key2">value2</prop> <prop key="key3">value3</prop> </props> </property> <property name="maps"> <map> <entry key="key-1" value="value-1"/> <entry key="key-2" value="value-2"/> <entry key="key-3" value="value-3"/> </map> </property> </bean> </beans>

    (6)Test.java

    public class Test { @org.junit.Test public void test1() { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); PersonService personService = (PersonService)ctx.getBean("personService1"); personService.save(); } @org.junit.Test public void test2() { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); PersonService personService = (PersonService)ctx.getBean("personService2"); personService.save(); for(String value : personService.getSets()){ System.out.println(value); } for(String value : personService.getLists()){ System.out.println(value); } for(Object key : personService.getProperties().keySet()){ System.out.println(key+"="+ personService.getProperties().getProperty((String)key)); } for(String key : personService.getMaps().keySet()){ System.out.println(key+"="+ personService.getMaps().get(key)); } } }

    4、结果

    test1()运行结果:

    null PersonDaoBean add

    test2()运行结果:

    hwd PersonDaoBean add 第一个 第二个 第三个 第一个list元素 第二个list元素 第三个list元素 key3=value3 key2=value2 key1=value1 key-1=value-1 key-2=value-2 key-3=value-3

    转载请注明原文地址: https://ju.6miu.com/read-969759.html

    最新回复(0)