多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > Spring――IOC(三)

Spring――IOC(三)

來源:程序員人生   發布時間:2015-02-11 08:33:43 閱讀次數:3271次

6、集合注入

(1)假定UserDAOImpl中有sets,listsmaps3個集合屬性

package com.zgy.impl;

 

import java.util.List;

import java.util.Map;

import java.util.Set;

 

import com.zgy.dao.UserDAO;

import com.zgy.model.User;

 

public class UserDAOImpl implements UserDAO{

private Set<String> sets;

private List<String> lists;

private Map<String,String> maps;

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 Map<String, String> getMaps() {

return maps;

}

public void setMaps(Map<String, String> maps) {

this.maps = maps;

}

public void save(User u) {

System.out.println("user saved");

}

public String toString(){

return "sets size"+sets.size()+"| lists size:"+lists.size()+"| maps size"+maps.size();

}

}

(2)配置文件中配集合元素的值

<?xml version="1.0" encoding="UTF⑻"?>

<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⑵.5.xsd">

<!-- bean也能夠使用name來標識 -->

<bean name="userDAO" class="com.zgy.impl.UserDAOImpl">

<property name="sets">

<set>

<value>1</value>

<value>2</value>

</set>

</property>

<property name="lists">

<list>

<value>1</value>

<value>2</value>

<value>3</value>

</list>

</property>

<property name="maps">

<map>

<entry key="1" value="1"></entry>

<entry key="2" value="2"></entry>

<entry key="3" value="3"></entry>

<entry key="4" value="4"></entry>

</map>

</property>

</bean>

<bean name="userService" class="com.zgy.service.UserService" scope="prototype">

<!-- <property name="userDAO" ref="u" /> -->

<constructor-arg>

<ref bean="u"/>

</constructor-arg>

</bean>

</beans>

(3)驗證:

package com.bjsxt.service;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.zgy.dao.UserDAO;

 

 

public class UserServiceTest {

 

@Test

public void testAdd() throws Exception {

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

UserDAO userDAO = (UserDAO) applicationContext.getBean("userDAO");

System.out.println(userDAO);

}

 

}

(4)結果:

sets size2| lists size:3| maps size4

 

 

 

7、自動裝配

自動裝配的方式有以下幾種實現情勢:

 

byName、byType、autodetect、constructor、defaultno

以下測試byName的情勢的自動裝配

1)假定有以下的配置文件,配置了以下的3個bean

userDAO、userDAO2userService

配置文件以下:

<?xml version="1.0" encoding="UTF⑻"?>

<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⑵.5.xsd">

<!-- bean也能夠使用name來標識 -->

<bean name="userDAO" class="com.zgy.impl.UserDAOImpl">

<property name="daoId" value="1"></property>

</bean>

 

<bean name="userDAO2" class="com.zgy.impl.UserDAOImpl">

<property name="daoId" value="2"></property>

</bean>

<bean name="userService" class="com.zgy.service.UserService" autowire="byName">

</bean>

</beans>

 

以上的配置中,userService這個bean是由按名稱自動裝配的,在UserService中含有UserDAO這個對象,所以,依照byName的方式可以找到userDAO這個bean,完成自動裝配。

(2)UserService類以下:

package com.zgy.service;

 

import com.zgy.dao.UserDAO;

import com.zgy.model.User;

 

public class UserService {

private UserDAO userDAO;

public void add(User u){

this.userDAO.save(u);

}

 

public UserDAO getUserDAO() {

return userDAO;

}

 

public void setUserDAO(UserDAO userDAO) {

this.userDAO = userDAO;

}

}

(3)UserDAOImpl類以下:

package com.zgy.impl;

 

import com.zgy.dao.UserDAO;

import com.zgy.model.User;

 

public class UserDAOImpl implements UserDAO{

private int daoId;

 

public int getDaoId() {

return daoId;

}

 

public void setDaoId(int daoId) {

this.daoId = daoId;

}

 

@Override

public void save(User u) {

System.out.println("user saved");

}

@Override

public String toString(){

return "daoId="+daoId;

}

}

(4)測試:

package com.bjsxt.service;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.zgy.dao.UserDAO;

import com.zgy.service.UserService;

 

 

public class UserServiceTest {

 

@Test

public void testAdd() throws Exception {

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

UserService userService= (UserService) applicationContext.getBean("userService");

System.out.println(userService.getUserDAO());

}

 

}

 

(5)結果:

daoId=1

 

 

 

以下測試byType的情勢的自動裝配

(1)修改配置文件成以下情勢;

<?xml version="1.0" encoding="UTF⑻"?>

<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⑵.5.xsd">

<!-- bean也能夠使用name來標識 -->

<!-- 

<bean name="userDAO" class="com.zgy.impl.UserDAOImpl">

<property name="daoId" value="1"></property>

</bean>

  -->

<bean name="userDAO2" class="com.zgy.impl.UserDAOImpl">

<property name="daoId" value="2"></property>

</bean>

<bean name="userService" class="com.zgy.service.UserService" autowire="byType">

</bean>

</beans>

 

(2)再次測試

(3)結果:

daoId=2


8、生命周期

A)在配置文件中,配置1個bean的時候,可以指定1個lazy-init屬性,該屬性設置為true的時候,指明該bean先不進行初始化,而是在用到的時候,在使用getBean的時候才會初始化該bean。使用的場景:利用啟動時間太長,可使用此方法。

 

B)init-methoddestory-method不要和prototype1起使用

 

(1)UserService類中增加init()destory()方法:

package com.zgy.service;

 

import com.zgy.dao.UserDAO;

import com.zgy.model.User;

 

public class UserService {

private UserDAO userDAO;

public void init(){

System.out.println("init");

}

public void add(User u){

this.userDAO.save(u);

}

 

public UserDAO getUserDAO() {

return userDAO;

}

 

public void setUserDAO(UserDAO userDAO) {

this.userDAO = userDAO;

}

public void destory(){

System.out.println("destroy");

}

}

 

(2)配置文件中的配置以下:

<?xml version="1.0" encoding="UTF⑻"?>

<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⑵.5.xsd">

<!-- bean也能夠使用name來標識 -->

 

<bean name="u" class="com.zgy.impl.UserDAOImpl">

</bean>

<bean name="userService" class="com.zgy.service.UserService" init-method="init" destroy-method="destory">

</bean>

</beans>

(3)測試:

package com.bjsxt.service;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.zgy.dao.UserDAO;

import com.zgy.service.UserService;

 

 

public class UserServiceTest {

 

@Test

public void testAdd() throws Exception {

ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

UserService userService= (UserService) applicationContext.getBean("userService");

applicationContext.destroy();

}

 

}

 

(4)結果:

init

 

Destroy

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲日本中文字幕永久 | jizz18免费视频 | 亚洲精品一区二区三区在线看 | 国产精品日韩欧美亚洲另类 | 91情国产l精品国产亚洲区 | 最近最新的中文字幕大全3 最近最新高清免费中文字幕 | 91国内精品久久久久怡红院 | 在线国产小视频 | 天堂最新在线 | 激情综合五月天丁香婷婷 | 久久入| 成年人在线视频免费观看 | 一区二区三区四区视频 | 一本大道卡一卡二卡三视频 | 一区二区三区四区视频 | 欧美性狂丰满性猛交 | 久久精品观看 | 操www| 亚洲精品国产福利一区二区三区 | 明星三级国产免费播放 | 国产精品亚洲综合一区在线观看 | 亚洲香蕉一区二区三区在线观看 | 欧美成人看片一区二区三区尤物 | 欧美在线亚洲国产免m观看 欧美在线一二三 | 在线观看麻豆国产精品 | 欧美人与动性行为另类 | 日韩理论片在线观看 | 国产五月天在线 | 手机精品视频在线观看免费 | 武则天a级在线观看 | 国产农村1级毛片 | 国内成人精品亚洲日本语音 | 黄色大片日本 | 欧美日韩国产一区 | 91最新地址永久入口 | 黄色免费网站在线看 | 2021国产精品系列一区二区 | 欧美一级毛片香蕉网 | 在线观看中文字幕 | 国产成人三级视频在线观看播放 | 国产成人一区二区三区在线视频 |