Spring注入方式及注解配置

一:基于xml的DI(Dependency Injection)

注入類型:

定義學生Student實體類和小汽車Car實體類:進行封裝和生成ToString(),并自定義屬性Car

Student

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public?class?Student {
private?String name;
private?String age;
private?Car car;
??
//無參構造
public?Student() {
????//System.out.println("Student.Student()");
}
??
//帶參構造
public?Student(String name, String age, Car car) {
??
????this.name = name;
????this.age = age;
????this.car = car;
}
@Override
public?String toString() {
????return?"Student [name="?+ name +?", age="?+ age +?", car="?+ car +?"]";
}
public?Car getCar() {
????return?car;
}
??
public?void?setCar(Car car) {
????this.car = car;
}
??
public?String getAge() {
????return?age;
}
??
public?void?setAge(String age) {
????this.age = age;
}
??
public?String getName() {
????return?name;
}
??
public?void?setName(String name) {
????this.name = name;
}
}

 Car:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public?class?Car {
??
private?String color;
private?String brand;
??
??
//無參構造
public?Car() {
??????
}
??
//帶參構造
public?Car(String color, String brand) {
????super();
????this.color = color;
????this.brand = brand;
}
??
@Override
public?String toString() {
????return?"Car [color="?+ color +?", brand="?+ brand +?"]";
}
??
public?String getColor() {
????return?color;
}
public?void?setColor(String color) {
????this.color = color;
}
public?String getBrand() {
????return?brand;
}
public?void?setBrand(String brand) {
????this.brand = brand;
}
}

 1.設值注入(set方法注入):本質上是調用了Bean的setXXX()進行值的注入。分為普通屬性和域屬性

實現效果:

?


2.構造注入

?

實現效果:


3.命名空間p注入
? ?使用前要先要在Spring配置文件中引入p命名空間

實現效果:

?


二、集合屬性注入[List、Set、Map]

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public?class?MyCollection {
  private?List<String> list;
  private?Set<String> set;
  private?Map<String,String> map;
??
public?Map<String, String> getMap() {
????return?map;
}
??
public?void?setMap(Map<String, String> map) {
????this.map = map;
}
??
public?Set<String> getSet() {
????return?set;
}
??
public?void?setSet(Set<String> set) {
????this.set = set;
}
??
public?List<String> getList() {
????return?list;
}
??
public?void?setList(List<String> list) {
????this.list = list;
}

配置文件:

?List與Set同理:

?

?

Map雙列集合:

?


三:基于注解的DI

  @Component[不分層的情況下]

?

  @Repository() [Dao層] 

?

  @Service() [Biz層]

?

  @Controller() [Action類]?

?

? ? ??? ?注:在項目中添加Spring AOP相關的JAR文件以及xsd約束文件。

? ? ? ? ?由于是基于注解的DI,所以無需再Spring配置文件中進行節點配置,只需配置包掃描器即可!

配置包掃描器用途:

該包下以及子包中的類才可以被Spring掃描,去尋找被注解的類和屬性,讓Spring容器管理賦值

?

Student類:

指定@Component中的value即可在測試類中的getBean()中植入即可。

@Value為該屬性賦值

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Component(value="stu")
public?class?Student {
@Value("呵呵")??
private?String name;
@Value("13")
private?String age;
??
/*
?* JDK注解 @Resource(name="car2")
?*/
??
/*
?* Spring注解
?*/
@Autowired
@Qualifier(value="car2")
??
private?Car car;
??
@Override
public?String toString() {
????return?"Student [name="?+ name +?", age="?+ age +?", car="?+ car +?"]";
}

?

Car類:

?

1
2
3
4
5
6
7
8
9
10
11
@Component(value="car2")
public?class?Car {
@Value("黑色")
private?String color;
@Value("奧迪")
private?String brand;
??
@Override
public?String toString() {
????return?"Car [color="?+ color +?", brand="?+ brand +?"]";
}

?

轉載于:https://www.cnblogs.com/BrokenIce/p/7235465.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371637.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371637.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371637.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 切面 不執行,解決springboot的aop切面不起作用問題(失效的排查)

檢查下springboot的啟動類是否開啟掃描springbootapplicationcomponentscan(basepackages {"com.zhangpu.springboot"})另外springboot默認開啟的enableaspectjautoproxy為true如果不放心可以增加&#xff1a;enableaspectjautoproxy(proxytargetclasstrue)第二種可…

修改readonly屬性的值

一般情況下&#xff0c;readonly屬性的值是無法修改的&#xff0c;但可以通過特殊方式修改。定義一個student的類&#xff0c;其中name屬性為readonly類型的變量 interface JFStudent : NSObjectproperty(nonatomic,copy,readonly) NSString *hisName;property(nonatomic,copy)…

VisualVM:通過SSH監視遠程JVM(是否為JMX)

VisualVM是用于監視JVM&#xff08;5.0&#xff09;的有關內存使用情況&#xff0c;線程&#xff0c;GC&#xff0c;MBeans等的出色工具。讓我們看看如何通過SSH使用它來監視&#xff08;甚至使用JMX對其進行采樣&#xff0c;對帶有JMX的遠程JVM進行監視&#xff09;它。 這篇文…

h5 php js實驗總結,H5學習_番外篇_PHP數據庫操作

1. 文件操作1.1 打開關閉文件fopen()resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )?fopen()函數將resource綁定到一個流或句柄。綁定之后&#xff0c;腳本就可以通過句柄與此資源交互;例1:以只讀方式打開一個位于本地服務…

ReactNative開發環境

此內容根據徐贏老師的文檔整理后寫處 原版地址&#xff1a;https://tuomaxu.gitbooks.io/reactnative/content/ ReactNative是跨平開發的解決方案&#xff0c;在開發平臺的選擇上&#xff0c;mac平臺和win平臺都可以。 所需要工具如下&#xff1a; 1&#xff0c;Nodejs環境 2&a…

Python自動化開發 - 字符串, 列表, 元組, 字典和和文件操作

一、字符串特性&#xff1a;字符串本身不可修改&#xff0c;除非字符串變量重新賦值。Python3中所有字符串都是Unicode字符串&#xff0c;支持中文。 >>> name "Jonathan" >>> name "Jonathan" "Ni" >>>print(na…

shiro java配置,InI 配置 - 跟我學 Apache Shiro_教程_Java開發社區

INI 配置之前章節我們已經接觸過一些 INI 配置規則了&#xff0c;如果大家使用過如 Spring 之類的 IoC/DI 容器的話&#xff0c;Shiro 提供的 INI 配置也是非常類似的&#xff0c;即可以理解為是一個 IoC/DI 容器&#xff0c;但是區別在于它從一個根對象 securityManager 開始。…

在Spring容器外部連接對象依賴項

有幾種有趣的方法可以設置在Spring容器外部實例化的對象的屬性和依賴關系。 用例首先&#xff0c;為什么我們需要在Spring容器之外進行依賴注入–我知道三個用例&#xff0c;其中我實例化了Spring容器之外的對象并需要注入依賴。 首先考慮使用Spring TaskExecutor執行一系列任…

前端學習路線匯總

https://123.w3cschool.cn/plk2fihttps://www.w3cschool.cn/nodejs/nodejs-global-object.htmlnode.js轉載于:https://www.cnblogs.com/sxz2008/p/7238773.html

MediaInfo源代碼分析 1:整體結構

博客地址&#xff1a;http://blog.csdn.net/leixiaohua1020/article/details/12016231 MediaInfo源代碼分析系列文章列表&#xff1a; MediaInfo源代碼分析 1&#xff1a;整體結構MediaInfo源代碼分析 2&#xff1a;API函數MediaInfo源代碼分析 3&#xff1a;Open()函數MediaI…

測試RESTful服務的客戶端

開發使用RESTful Web API的應用程序可能意味著開發服務器和客戶端。 為服務器端編寫集成測試可以像使用Arquillian來啟動服務器一樣容易&#xff0c;并且可以通過REST確保測試服務是否按預期工作。 問題是如何測試客戶端。 在本文中&#xff0c;我們將了解如何使用模擬來測試客…

linux mysql誤刪,linux下MySQL安裝與刪除?(Ubuntu)

1、MySQL安裝A)MySQL安裝&#xff1a; sudo apt-get install mysql-server mysql-clientB)啟動/停止MySQL服務&#xff1a;MySQL 在安裝以后&#xff0c;MySQL 就已經啟動&#xff1b;如果需要手動啟動或停止則如下操作&#xff1a;手動啟動服務&#xff1a; sudo start mysql手…

對多態的理解例子

public class A {public String show(D obj) {return ("A and D");}public String show(A obj) {return ("A and A");} }class B extends A{public String show(B obj){ //重載return ("B and B");}public String show(A obj){ //重寫show(A obj…

【Java每日一題】20170120

20170119問題解析請點擊今日問題下方的“【Java每日一題】20170120”查看&#xff08;問題解析在公眾號首發&#xff0c;公眾號ID&#xff1a;weknow619&#xff09; package Jan2017; import java.util.Arrays; import java.util.List; public class Ques0120 { publ…

使用NoSQL實現實體服務–第2部分:合同優先

現在該開始使用NoSQL項目對SOA實體服務進行編碼了&#xff0c;并且正如我所承諾的&#xff0c;我將從Web服務的合同開始。 看一下本系列的第1部分 。 這種從Web服務合同定義開始的技術是面向服務的體系結構實現的“合同優先”方法的核心&#xff0c;并具有許多技術優勢&#xf…

php hugepage,【原創】解決Redis啟動報錯:Transparent Huge Pages (THP) support enabled in your kernel...

問題背景Redis啟動報錯&#xff1a;WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.This will create latency and memory usage issues with Redis.To fix this issue run the command echo never > /sys/kernel/mm/transparent_hugepage/…

hibernate cascade的真正含義

hibernate cascade 是 OneToOne OneToMany ManyToOne ManyToMany等注解的屬性&#xff0c;表示級聯操作。 /*** (Optional) The operations that must be cascaded to* the target of the association.** <p> By default no operations are cascaded.*/CascadeType[] cas…

射線碰撞檢測

在我們的游戲開發過程中&#xff0c;有一個很重要的工作就是進行碰撞檢測。例如在射擊游戲中子彈是否擊中敵人&#xff0c;在RPG游戲中是否撿到裝備等等。在進行碰撞檢測時&#xff0c;我們最常用的工具就是射線&#xff0c;Unity 3D的物理引擎也為我們提供了射線類以及相關的函…

高級ZK:異步UI更新和后臺處理–第1部分

異步UI更新非常有用&#xff0c;因為它們通常可以提高響應性&#xff0c;可用性和用戶界面的總體感覺。 我將在這里重點介紹ZK框架&#xff0c;但是通常&#xff0c;相同的原理也適用于桌面UI&#xff08;Swing&#xff0c;SWT&#xff09;。 長時間運行的處理 有時&#xff0…

php注冊登錄遍寫入 遍驗證,自動注冊登錄驗證機制的php代碼

在phpwind站點后臺添加“廣告管家”(CNZZ的一款廣告投放的應用)的應用&#xff0c;整個“廣告管家”通過iframe載入&#xff0c;載入的具體內容根據不同站點顯示針對該站點的具體內容。出于意用性方面的考慮&#xff0c;需要以下二點&#xff1a;1、首次進入“廣告管家”頁面自…