spring自定義容器使用教程 spring自定義類有哪些?
spring自定義類有哪些?ConversionService是Spring類型轉(zhuǎn)換體系的核心接口??梢岳肅onversionServiceFactoryBean在Spring的IOC容器中定義一個(gè)
spring自定義類有哪些?
ConversionService是Spring類型轉(zhuǎn)換體系的核心接口。可以利用ConversionServiceFactoryBean在Spring的IOC容器中定義一個(gè)ConversionService。
SpringMVC自定義類型轉(zhuǎn)化器
2
我們自定義一個(gè)表單數(shù)據(jù)格式,直接轉(zhuǎn)換成VO對(duì)象。輸入的格式:GG-gwolf_2010@。在表單輸入框定義一個(gè)表單。
Spring和SpringMVC的區(qū)別是什么?
1、定義spring是一個(gè)一站式的框架,提供了表現(xiàn)層(springmvc)到業(yè)務(wù)層(spring)再到數(shù)據(jù)層的全套解決方案;spring的兩大核心IOC(控制反轉(zhuǎn))和AOP(面向切面編程)更是給我們的程序解耦和代碼的簡(jiǎn)介提供了支持。
2、服務(wù)目標(biāo)SpringMVC是一個(gè)MVC模式的WEB開發(fā)框架而Spring是一個(gè)通用解決方案,,Spring可以結(jié)合SpringMVC等很多其他解決方案一起使用, 不僅僅只適用于WEB開發(fā)。
3、項(xiàng)目范圍Spring可以說(shuō)是一個(gè)管理bean的容器,也可以說(shuō)是包括很多開源項(xiàng)目的總稱。而spring mvc只是其中一個(gè)開源項(xiàng)目。
spring入門詳解?
一、Spring概述
Spring是一個(gè)輕量級(jí)的DI/IOC和AOP的容器框架
??輕量級(jí):簡(jiǎn)單好用,通常來(lái)說(shuō)功能不強(qiáng)大(但spring功能強(qiáng)大)
??DI(依賴注入):動(dòng)態(tài)的向某個(gè)對(duì)象提供它所需要的其他對(duì)象,也可以為對(duì)象的屬性字段賦值。(依賴注入又分為xml注入和注解注入)
??IOC(控制翻轉(zhuǎn)):由spring控制對(duì)象的生命周期(創(chuàng)建,銷毀)
??AOP(面向切面編程):解決重復(fù)代碼。將相同的邏輯抽取出來(lái),即將業(yè)務(wù)邏輯從應(yīng)用服務(wù)中分離出來(lái)。然后以攔截的作用在一個(gè)方法的不同位置。
二、Spring入門
1.引入庫(kù)
導(dǎo)包的時(shí)候注意,現(xiàn)在使用Spring,要完成最小導(dǎo)包,即:需要什么jar包,我們就導(dǎo)入什么jar包,用到了其他功能,再添加相應(yīng)jar包。這個(gè)對(duì)認(rèn)識(shí)框架的包是非常有幫助的:
2.導(dǎo)入Spring配置文件
1. 在classpath的根目錄下新建一個(gè)applicationContext.xml配置文件,文件名可以自定義,但是通常使用applicationContext這個(gè)名字:
lt?xml version#341.0#34 encoding#34UTF-8#34?gt
ltb:xsi##34
xsi:schemaLocation#
#34gt
tltbean id#34...#34 class#34...#34gt
tlt!-- collaborators and configuration for this bean go here --gt
tlt/beangt
lt/beansgt
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
3.編寫邏輯代碼
public class MyBean {
tpublic void hello(){
(#34hello spring...#34)
t}
}
1
2
3
4
5
6
1
2
3
4
5
6
4.將這個(gè)類交給Spring去管理即注冊(cè)到Spring容器中
在配置文件中將這個(gè)Java類交給Spring管理。在applicationContext.xml中配置
ltbeans
ltbean id#34myBean#34 class#_01_#34gtlt/beangt
lt/beansgt
1
2
3
4
1
2
3
4
5.Spring容器的實(shí)例化
Spring容器對(duì)象有兩種:BeanFactory和ApplicationContext(推薦使用)
BeanFactory
@Test
public void testHelloSpring1() throws Exception {
t/**
t *我們第一步是要啟動(dòng)框架,而啟動(dòng)框架則需要拿到Spring的核心對(duì)象
t *咱們學(xué)習(xí)的第一個(gè)核心對(duì)象是BeanFactory : 顧名思義,這是一個(gè)創(chuàng)建Bean的工廠
t *而Bean工廠創(chuàng)建對(duì)象又必需拿到配置文件中的數(shù)據(jù)
t *因?yàn)椋何覀兊牡谝徊阶x取配置文件,拿到BeanFactory工廠t
t */
t
t//第一步:讀取資源文件
tResource resource new ClassPathResource(#34applicationContext.xml#34)
t//第二步:拿到核心對(duì)象 BeanFactory
tBeanFactory factory new XmlBeanFactory(resource)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ApplicationContext(推薦使用)
@Test
public void testHelloSpring2() throws Exception {
t/**
t *我們第一步是要啟動(dòng)框架,而啟動(dòng)框架則需要拿到Spring的核心對(duì)象
t *咱們學(xué)習(xí)的第一個(gè)核心對(duì)象是BeanFactory : 顧名思義,這是一個(gè)創(chuàng)建Bean的工廠
t *而Bean工廠創(chuàng)建對(duì)象又必需拿到配置文件中的數(shù)據(jù)
t *因?yàn)椋何覀兊牡谝徊阶x取配置文件,拿到BeanFactory工廠t
t */
t
t//加載工程classpath下的配置文件實(shí)例化
tString conf #34applicationContext.xml#34
tApplicationContext factory new ClassPathXmlApplicationContext(conf)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
6.獲取對(duì)象
一:通過(guò)id直接拿到相應(yīng)的Bean對(duì)象
//通過(guò)xml中配置的id拿到對(duì)象
MyBean bean (MyBean)(#34myBean#34)
(bean)
1
2
3
4
1
2
3
4
二:通過(guò)id與對(duì)象的Class對(duì)象拿到Bean對(duì)象(推薦使用)
//通過(guò)id與對(duì)象的class拿到Bean對(duì)象
MyBean bean (#34myBean#34,)
(bean)
1
2
3
4
1
2
3
4
三、Spring依賴注入
1.xml注入
顧名思義:在xml中進(jìn)行配置,但是這種必須有對(duì)應(yīng)的setter方法,所有這種注入又稱之為屬性注入或setter方法注入
public class MyBean{
tprivate OtherBean otherBean
tpublic void hello(){
ttotherBean.hello()
t}
public void setOtherBean(OtherBean otherbean){
this.OtherBean OtherBean
}
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
public class OtherBean{
tpublic void hello(){
(#34otherbean hello#34)
t}
}
1
2
3
4
5
6
1
2
3
4
5
6
//xml配置:
ltbean id#34otherBean#34 class##34gtlt/beangt
ltbean id#34myBean#34 class##34gt
ltproperty name#34otherBean#34 ref#34otherBean#34gtlt/propertygt
lt/beangt
1
2
3
4
5
6
1
2
3
4
5
6
2.注解注入
顧名思義:通過(guò)注解實(shí)現(xiàn)注入,這種可以將注解寫在setter方法上,也可以寫在字段上,如果寫在字段上可以不需要setter方法
2.1方案一:使用@Autowired
@Autowired為Spring提供的注解
public class MyBean{
tprivate OtherBean otherBean
tpublic void hello(){
ttotherBean.hello()
t}
}
public class OtherBean{
tpublic void hello(){
(#34otherbean hello#34)
t}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//xml配置:
ltbean id#34otherBean#34 class##34gtlt/beangt
ltbean id#34myBean#34 class##34gtlt/beangt
1
2
3
1
2
3
2.2方案二:使用@Resource
public class MyBean{
@Resource
tprivate OtherBean otherBean
tpublic void hello(){
ttotherBean.hello()
t}
}
public class OtherBean{
tpublic void hello(){
(#34otherbean hello#34)
t}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
和@Resource區(qū)別
@Autowired:默認(rèn)類型匹配再按照名字匹配
@Resource:默認(rèn)按照名字匹配然后按照類型匹配