javascript
JAVAEE框架之Spring注解
四.注解
? 通過(guò)注解來(lái)實(shí)現(xiàn)依賴注入,為什么要學(xué)這個(gè)呢???之前的bean的配置都在哪里呢?都放在了beans.xml這個(gè)文件里面。當(dāng)項(xiàng)目有很多個(gè)bean需要配置的時(shí)候,假設(shè)有30張表,需要配置每個(gè)表對(duì)應(yīng)的dao實(shí)現(xiàn)類、service實(shí)現(xiàn)類,會(huì)導(dǎo)致配置文件比較臃腫。今天通過(guò)使用注解來(lái)簡(jiǎn)化bean文件的配置。
? 在項(xiàng)目開(kāi)發(fā)中,使用xml文件和注解都可以來(lái)實(shí)現(xiàn)依賴注入。
4.1 pom.xml
<!--導(dǎo)入jar依賴--> <dependencies><!--Spring:jar依賴--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.7.RELEASE</version></dependency><!--jUnit:jar依賴--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency> </dependencies>4.2 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" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--需要注意:掃描包,來(lái)找到需要注入的Bean的包位置;base-package:基本掃描路徑,去哪個(gè)包下進(jìn)行掃描;--><context:component-scan base-package="com.aaa.pojo"/></beans>4.3 分層構(gòu)建
在之前的JAVA WEB項(xiàng)目有dao層、service層、controller層。
丁磊–》163郵箱起家–>大話西游 等游戲,養(yǎng)豬;
張朝陽(yáng)–>搜狐老板–》養(yǎng)狐貍
馬化騰–》騰訊老板–>養(yǎng)企鵝
馬云–>養(yǎng)貓
劉強(qiáng)東–》養(yǎng)狗
4.4 注解標(biāo)簽
@Component:將類注冊(cè)為Spring的Bean組件value="原來(lái)的id值"value也可以省略,“id的值"如果不寫("id值"),會(huì)怎么樣???默認(rèn)為:首字母小寫的類名--------------------------------------------- 自動(dòng)裝配: @Autowired:按照Bean的類型進(jìn)行裝配;byType按類型裝配,只能裝配一個(gè)類型實(shí)現(xiàn)類;如果存在多個(gè)相同類型的實(shí)現(xiàn)類,需要針對(duì)每個(gè)實(shí)現(xiàn)類,增加一個(gè)注解@Qualifer("實(shí)現(xiàn)類的id名")注:@Qualifer不能單獨(dú)使用,需要和@Autowird一起使用 @Resource(name = "fox"):按照Bean的name來(lái)進(jìn)行裝配注入;byName實(shí)現(xiàn)類:
@Component public class PigImpl implements IAnimal{//這些私有屬性,任意發(fā)揮,這里不是重點(diǎn);private double weight;private String color;//在方法的實(shí)現(xiàn);public void run() {System.out.println("小豬在跑...");} }Person類:注意這時(shí)候沒(méi)有Qualifier
@Component public class Person {//這時(shí)候要養(yǎng)豬,理解一下;注入值;//自動(dòng)裝配的方式;//Qualifier(value="值")不是name;@Autowiredprivate IAnimal animal;public void feed(){animal.run();System.out.println("開(kāi)始喂養(yǎng)");}@Overridepublic String toString() {return "Person{" +"animal=" + animal +'}';} }不管是哪種裝配Bean的方式,都需要增加裝配Bean的包路徑。
<!--需要注意:掃描包,來(lái)找到需要注入的Bean的包位置;base-package:基本掃描路徑,去哪個(gè)包下進(jìn)行掃描; --> <context:component-scan base-package="com.aaa.pojo,com.aaa.dao"/>4.5
總結(jié):
1.為什么要使用注解注入和裝配;
2.掌握@Component注解,理解@Autowired 按類型裝配和@Resource按name裝配;
3.使用@Component注解的時(shí)候,切記要增加掃描包的配置,注解哪個(gè)Bean,就要增加哪個(gè)掃描包路徑。
l.run();
System.out.println(“開(kāi)始喂養(yǎng)”);
}
@Override
public String toString() {
return “Person{” +
“animal=” + animal +
‘}’;
}
}
4.5
注意的問(wèn)題:
[外鏈圖片轉(zhuǎn)存中…(img-CcHERyds-1592274645404)]
有兩個(gè)IAnimal接口的實(shí)現(xiàn)類的時(shí)候,報(bào)錯(cuò)了。
[外鏈圖片轉(zhuǎn)存中…(img-QmgktRb9-1592274645407)]
[外鏈圖片轉(zhuǎn)存中…(img-YET1Q6DV-1592274645409)]
[外鏈圖片轉(zhuǎn)存中…(img-MKslce4f-1592274645414)]
總結(jié):
1.為什么要使用注解注入和裝配;
2.掌握@Component注解,理解@Autowired 按類型裝配和@Resource按name裝配;
3.使用@Component注解的時(shí)候,切記要增加掃描包的配置,注解哪個(gè)Bean,就要增加哪個(gè)掃描包路徑。
總結(jié)
以上是生活随笔為你收集整理的JAVAEE框架之Spring注解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JAVA就业面试题之单例模式
- 下一篇: JAVAEE框架之Spring新注解