真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spring中bean基礎(chǔ)知識(shí)的示例分析

這篇文章主要為大家展示了“Spring中bean基礎(chǔ)知識(shí)的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Spring中bean基礎(chǔ)知識(shí)的示例分析”這篇文章吧。

專注于為中小企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)梁子湖免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

Bean:

  • 在Spring技術(shù)中是基于組件的

  • 最基本了是最常用的單元

  • 其實(shí)實(shí)例保存在Spring的容器當(dāng)中

Bean通常被定義在配置文件當(dāng)中,Bean實(shí)例化由Spring的Ioc容器進(jìn)行管理,Bean的實(shí)例可以通過(guò)Beanfactory進(jìn)行訪問(wèn),實(shí)際上大部分J2EE應(yīng)用,Bean是通過(guò)ApplicationContext來(lái)訪問(wèn)的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory強(qiáng)大許多

在前面得博客依賴注入與控制反轉(zhuǎn)中演示了應(yīng)用spring實(shí)現(xiàn)ioc,在ApplicationContext.xml中有bean的配置,里面只是bean簡(jiǎn)單的應(yīng)用。這篇主要是進(jìn)一步學(xué)習(xí)使用bean。

一、定義







上面的代碼是之前博客配置的,可以看到bean的基本構(gòu)成。 是Sring配置文件的根節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)里面可以有多個(gè)節(jié)點(diǎn)。在bean中常用兩個(gè)屬性:ID,Class. ID是一唯一標(biāo)識(shí),來(lái)確定是哪個(gè)bean,可以讓其他bean中使用id引用。class用來(lái)指定是哪個(gè)class。同時(shí)還可以設(shè)置scope屬性,scope有兩種:singleton,non-singelton。singleton:?jiǎn)螌?shí)例模式(默認(rèn),構(gòu)造方法為private),整個(gè)Spring的容器中只有一個(gè)共享實(shí)例存在(singleton)。non-singelton:每次請(qǐng)求該bean,Spring容器都會(huì)新建立一個(gè)bean實(shí)例,然后返回給程序(request,session,prototype)。

二、創(chuàng)建

Bean的命名機(jī)制

id 當(dāng)在Spring的窗口當(dāng)中,查找某個(gè)Bean對(duì)象時(shí),首先根據(jù)id進(jìn)行查找,將其余作為Bean的默認(rèn)名稱,如果ID屬性不存在,則根據(jù)Name屬性進(jìn)行查找(將其中的第一個(gè)名稱作為默認(rèn)的名稱),如果ID和NAME都不存在根據(jù)類的名稱進(jìn)行查找。id---------->name--------------->類名。

Bean的別名:可以使用alias來(lái)為bean指定別名.

下面的配置文件還是在上面的xml基礎(chǔ)上修改的。這里配置了ID為ServiceImpl的bean設(shè)置了別名。我們可以使用它的name、id、alias來(lái)獲取service。








package Cuiyw.SpringAop;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import Cuiyw.Spring.IService.IService;
public class App 
{
 public static void main( String[] args )
 {
 ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml"});
 BeanFactory factory=context;
 IService service=(IService)factory.getBean("ServiceA1");
 service.service("Cuiyw ServiceA1"); 
 service=(IService)factory.getBean("ServiceA");
 service.service("Cuiyw ServiceA"); 
 service=(IService)factory.getBean("ServiceImpl");
 service.service("Cuiyw ServiceImpl"); 
 }
}

Spring中bean基礎(chǔ)知識(shí)的示例分析

三、注入

1.基本類型和string

可以使用value元素來(lái)設(shè)置,在上面的代碼基礎(chǔ)上稍作修改

package Cuiyw.Spring.Service;
import Cuiyw.Spring.IDao.IDao;
import Cuiyw.Spring.IService.IService;
public class ServiceImpl implements IService{
 private IDao dao;
 private int baseProperty;
 public IDao getDao() {
  return dao;
 }
 public void setDao(IDao dao) {
  this.dao = dao;
 }
 public void service(String name) {
  System.out.println(dao.sayHello(name)+" baseProperty:"+getBaseProperty());
 }
 public int getBaseProperty() {
  return baseProperty;
 }
 public void setBaseProperty(int baseProperty) {
  this.baseProperty = baseProperty;
 }
}

Spring中bean基礎(chǔ)知識(shí)的示例分析

對(duì)于string類型,XML解析器以String類型解析出數(shù)據(jù),如果屬性不是String類型,屬性值會(huì)通過(guò)PropertyEditors轉(zhuǎn)換為其他類型,比如時(shí)間類型.

2.注入bean

上面的代碼中就注入了bean,在ServiceImpl中注入DaoImpl。可以使用ref來(lái)進(jìn)行配置。

3.注入集合

常見(jiàn)的集合有l(wèi)ist、map、set、property等,下面的代碼是在ServiceImpl中定義了幾個(gè)屬性,然后在上下文中通過(guò)屬性注入進(jìn)去。為了測(cè)試,在DaoImpl中也增加了一個(gè)屬性s。

package Cuiyw.Spring.Dao;
import java.util.Calendar;
import Cuiyw.Spring.IDao.IDao;
public class DaoImpl implements IDao{
 public String s;
 public String getS() {
  return s;
 }
 public void setS(String s) {
  this.s = s;
 }
 public String sayHello(String name) {
  int hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
  if(hour<6) return "凌晨早,"+name;
  if(hour<12)return "早上好,"+name;
  if(hour<13)return "中午好,"+name;
  if(hour<18)return "下午好,"+name;
  return "晚上好,"+name+", s="+s;   
 } 
}
package Cuiyw.Spring.Service;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import Cuiyw.Spring.IDao.IDao;
import Cuiyw.Spring.IService.IService;
public class ServiceImpl implements IService{
 private IDao dao;
 private int baseProperty;
 private List lists;
 private Set sets;
 private Map maps;
 private Properties pros;
 public IDao getDao() {
  return dao;
 }
 public void setDao(IDao dao) {
  this.dao = dao;
 }
 public void service(String name) {
  System.out.println(dao.sayHello(name)+",baseProperty:"+getBaseProperty());
  for(int i=0;i pro=pros.stringPropertyNames();
   Iterator it=pro.iterator();
   while(it.hasNext()){
    Object key=it.next();
    System.out.println(key+"----"+pros.getProperty((String) key));
    }
 }
 public int getBaseProperty() {
  return baseProperty;
 }
 public void setBaseProperty(int baseProperty) {
  this.baseProperty = baseProperty;
 }
 public List getLists() {
  return lists;
 }
 public void setLists(List lists) {
  this.lists = lists;
 }
 public Set getSets() {
  return sets;
 }
 public void setSets(Set sets) {
  this.sets = sets;
 }
 public Map getMaps() {
  return maps;
 }
 public void setMaps(Map maps) {
  this.maps = maps;
 }
 public Properties getPros() {
  return pros;
 }
 public void setPros(Properties pros) {
  this.pros = pros;
 }
}

主要是注入的配置,在list、map、set屬性中都是配置了一個(gè)基礎(chǔ)類型value=1,兩個(gè)DaoImpl類型。




 


 
 
 
   
   1
   
   
    
   
  
 
 
   
   1
   
   
    
   
  
 
 
   
   
   
   
   
    
   
   
  
 
 
  
   prokeyA
   prokeyB
  
 


執(zhí)行main方法可以看到屬性都注入進(jìn)去了。

Spring中bean基礎(chǔ)知識(shí)的示例分析

4.自定義屬性編輯器

對(duì)于有一些屬性是沒(méi)法注入的,此時(shí)就需要自定義,比如上面說(shuō)的日期類型。

首先是要定義一個(gè)繼承PropertyEditorSupport的類,重寫setAsText方法。

package Cuiyw.Spring.Service;
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class CustomerProperty extends PropertyEditorSupport {
 private String format="yyyy-MM-dd";
 public String getFormat() {
  return format;
 }
 public void setFormat(String format) {
  this.format = format;
 }
 @Override
 public void setAsText(String text) throws IllegalArgumentException {
  // TODO Auto-generated method stub
  SimpleDateFormat sdf=new SimpleDateFormat(format);
  //super.setAsText(text);
  try {
   //轉(zhuǎn)換對(duì)象,能過(guò)setValue方法重新賦值
   this.setValue(sdf.parse(text));
  } catch (ParseException e) {
   e.printStackTrace();
  }
 }
}

然后在配置文件配置這個(gè)類


 
 
 
 
 

這里還是在ServiceImpl中增加了一個(gè)java.util.Date類型的date屬性。并在配置文件注入值。

以上是“Spring中bean基礎(chǔ)知識(shí)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文名稱:Spring中bean基礎(chǔ)知識(shí)的示例分析
當(dāng)前鏈接:http://weahome.cn/article/jhgjcc.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部