天天看點

spring各種類型的屬性注入

spring test + Junit方式:

pox.xml

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code><code>?&gt;</code>

<code>&lt;</code><code>project</code> <code>xmlns</code><code>=</code><code>"http://maven.apache.org/POM/4.0.0"</code>

<code>         </code><code>xmlns:xsi</code><code>=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code>

<code>         </code><code>xsi:schemaLocation</code><code>=</code><code>"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>modelVersion</code><code>&gt;4.0.0&lt;/</code><code>modelVersion</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>groupId</code><code>&gt;com.try2better&lt;/</code><code>groupId</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>artifactId</code><code>&gt;spring&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>version</code><code>&gt;1.0-SNAPSHOT&lt;/</code><code>version</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>properties</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>spring.version</code><code>&gt;4.3.9.RELEASE&lt;/</code><code>spring.version</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>properties</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>dependencies</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>dependency</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>groupId</code><code>&gt;org.springframework&lt;/</code><code>groupId</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>artifactId</code><code>&gt;spring-context&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>version</code><code>&gt;${spring.version}&lt;/</code><code>version</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>dependency</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>artifactId</code><code>&gt;spring-aop&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>artifactId</code><code>&gt;spring-core&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>artifactId</code><code>&gt;spring-test&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>        </code><code>&lt;!-- https://mvnrepository.com/artifact/junit/junit --&gt;</code>

<code>            </code><code>&lt;</code><code>groupId</code><code>&gt;junit&lt;/</code><code>groupId</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>artifactId</code><code>&gt;junit&lt;/</code><code>artifactId</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>version</code><code>&gt;4.12&lt;/</code><code>version</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>scope</code><code>&gt;test&lt;/</code><code>scope</code><code>&gt;</code>

<code>        </code><code>&lt;!-- spring end --&gt;</code>

<code>    </code><code>&lt;/</code><code>dependencies</code><code>&gt;</code>

<code>&lt;/</code><code>project</code><code>&gt;</code>

Java:

<code>package</code> <code>beans;</code>

<code>import</code> <code>java.util.Arrays;</code>

<code>import</code> <code>java.util.List;</code>

<code>import</code> <code>java.util.Map;</code>

<code>import</code> <code>java.util.Properties;</code>

<code>import</code> <code>java.util.Set;</code>

<code>/*</code>

<code> </code><code>* DESCRIPTION : </code>

<code> </code><code>* USER : zhouhui</code>

<code> </code><code>* DATE : 2017/8/10 15:49</code>

<code> </code><code>*/</code>

<code>public</code> <code>class</code> <code>Bean {</code>

<code>    </code><code>private</code> <code>Integer inte;</code>

<code>    </code><code>private</code> <code>String str;</code>

<code>    </code><code>private</code> <code>String[] strArr;</code>

<code>    </code><code>private</code> <code>Boss boss;</code>

<code>    </code><code>private</code> <code>List&lt;String&gt; list;</code>

<code>    </code><code>private</code> <code>Set&lt;String&gt; set;</code>

<code>    </code><code>private</code> <code>Map&lt;String,Boss&gt; map;</code>

<code>    </code><code>//Properties和Map的差別是,Properties隻能接受key和value都是String</code>

<code>    </code><code>private</code> <code>Properties properties;</code>

<code>    </code><code>public</code> <code>Integer getInte() {</code>

<code>        </code><code>return</code> <code>inte;</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>void</code> <code>setInte(Integer inte) {</code>

<code>        </code><code>this</code><code>.inte = inte;</code>

<code>    </code><code>public</code> <code>String getStr() {</code>

<code>        </code><code>return</code> <code>str;</code>

<code>    </code><code>public</code> <code>void</code> <code>setStr(String str) {</code>

<code>        </code><code>this</code><code>.str = str;</code>

<code>    </code><code>public</code> <code>String[] getStrArr() {</code>

<code>        </code><code>return</code> <code>strArr;</code>

<code>    </code><code>public</code> <code>void</code> <code>setStrArr(String[] strArr) {</code>

<code>        </code><code>this</code><code>.strArr = strArr;</code>

<code>    </code><code>public</code> <code>Boss getBoss() {</code>

<code>        </code><code>return</code> <code>boss;</code>

<code>    </code><code>public</code> <code>void</code> <code>setBoss(Boss boss) {</code>

<code>        </code><code>this</code><code>.boss = boss;</code>

<code>    </code><code>public</code> <code>List&lt;String&gt; getList() {</code>

<code>        </code><code>return</code> <code>list;</code>

<code>    </code><code>public</code> <code>void</code> <code>setList(List&lt;String&gt; list) {</code>

<code>        </code><code>this</code><code>.list = list;</code>

<code>    </code><code>public</code> <code>Set&lt;String&gt; getSet() {</code>

<code>        </code><code>return</code> <code>set;</code>

<code>    </code><code>public</code> <code>void</code> <code>setSet(Set&lt;String&gt; set) {</code>

<code>        </code><code>this</code><code>.set = set;</code>

<code>    </code><code>public</code> <code>Map&lt;String, Boss&gt; getMap() {</code>

<code>        </code><code>return</code> <code>map;</code>

<code>    </code><code>public</code> <code>void</code> <code>setMap(Map&lt;String, Boss&gt; map) {</code>

<code>        </code><code>this</code><code>.map = map;</code>

<code>    </code><code>public</code> <code>Properties getProperties() {</code>

<code>        </code><code>return</code> <code>properties;</code>

<code>    </code><code>public</code> <code>void</code> <code>setProperties(Properties properties) {</code>

<code>        </code><code>this</code><code>.properties = properties;</code>

<code>    </code><code>@Override</code>

<code>    </code><code>public</code> <code>String toString() {</code>

<code>        </code><code>return</code> <code>"Bean{"</code> <code>+</code>

<code>                </code><code>"inte="</code> <code>+ inte +</code>

<code>                </code><code>", str='"</code> <code>+ str + '\</code><code>''</code> <code>+</code>

<code>                </code><code>", strArr="</code> <code>+ Arrays.toString(strArr) +</code>

<code>                </code><code>", boss="</code> <code>+ boss +</code>

<code>                </code><code>", list="</code> <code>+ list +</code>

<code>                </code><code>", set="</code> <code>+ set +</code>

<code>                </code><code>", map="</code> <code>+ map +</code>

<code>                </code><code>", properties="</code> <code>+ properties +</code>

<code>                </code><code>'}'</code><code>;</code>

<code>}</code>

實體:

<code> </code><code>* DATE : 2017/8/10 11:19</code>

<code>public</code> <code>class</code> <code>Boss {</code>

<code>    </code><code>private</code> <code>String name;</code>

<code>    </code><code>private</code> <code>Integer age;</code>

<code>    </code><code>private</code> <code>Boolean isMale;</code>

<code>    </code><code>public</code> <code>Boss() {</code>

<code>    </code><code>public</code> <code>Boss(String name, Integer age, Boolean isMale) {</code>

<code>        </code><code>this</code><code>.name = name;</code>

<code>        </code><code>this</code><code>.age = age;</code>

<code>        </code><code>this</code><code>.isMale = isMale;</code>

<code>    </code><code>public</code> <code>String getName() {</code>

<code>        </code><code>return</code> <code>name;</code>

<code>    </code><code>public</code> <code>void</code> <code>setName(String name) {</code>

<code>    </code><code>public</code> <code>Integer getAge() {</code>

<code>        </code><code>return</code> <code>age;</code>

<code>    </code><code>public</code> <code>void</code> <code>setAge(Integer age) {</code>

<code>    </code><code>public</code> <code>Boolean getMale() {</code>

<code>        </code><code>return</code> <code>isMale;</code>

<code>    </code><code>public</code> <code>void</code> <code>setMale(Boolean male) {</code>

<code>        </code><code>isMale = male;</code>

<code>        </code><code>return</code> <code>"Boss{"</code> <code>+</code>

<code>                </code><code>"name='"</code> <code>+ name + '\</code><code>''</code> <code>+</code>

<code>                </code><code>", age="</code> <code>+ age +</code>

<code>                </code><code>", isMale="</code> <code>+ isMale +</code>

spring xml:

<code>&lt;</code><code>beans</code> <code>xmlns</code><code>=</code><code>"http://www.springframework.org/schema/beans"</code>

<code>       </code><code>xmlns:xsi</code><code>=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code>

<code>       </code><code>xsi:schemaLocation</code><code>=</code><code>"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>import</code> <code>resource</code><code>=</code><code>"bean.xml"</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"boss"</code> <code>class</code><code>=</code><code>"beans.Boss"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"age"</code> <code>value</code><code>=</code><code>"10"</code><code>/&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"male"</code> <code>value</code><code>=</code><code>"false"</code><code>/&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"name"</code> <code>value</code><code>=</code><code>"zhouhui"</code><code>/&gt;</code>

<code>    </code><code>&lt;/</code><code>bean</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"boss2"</code> <code>class</code><code>=</code><code>"beans.Boss"</code> <code>scope</code><code>=</code><code>"singleton"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>constructor-arg</code> <code>name</code><code>=</code><code>"age"</code> <code>value</code><code>=</code><code>"11"</code><code>/&gt;</code>

<code>        </code><code>&lt;</code><code>constructor-arg</code> <code>name</code><code>=</code><code>"name"</code> <code>value</code><code>=</code><code>"zhouhui2"</code><code>/&gt;</code>

<code>        </code><code>&lt;</code><code>constructor-arg</code> <code>name</code><code>=</code><code>"isMale"</code> <code>value</code><code>=</code><code>"true"</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"boss3"</code> <code>class</code><code>=</code><code>"beans.Boss"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"bossService"</code> <code>class</code><code>=</code><code>"impl.BossServiceImpl"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"boss"</code> <code>ref</code><code>=</code><code>"boss2"</code><code>&gt;&lt;/</code><code>property</code><code>&gt;</code>

<code>&lt;/</code><code>beans</code><code>&gt;</code>

bean xml:

<code>    </code><code>&lt;!-- boss對象的bean --&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"myBoss"</code> <code>class</code><code>=</code><code>"beans.Boss"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"bean"</code> <code>class</code><code>=</code><code>"beans.Bean"</code><code>&gt;</code>

<code>        </code><code>&lt;!-- private Boss boss; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"boss"</code> <code>ref</code><code>=</code><code>"myBoss"</code><code>/&gt;</code>

<code>        </code><code>&lt;!-- private Integer inte; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"inte"</code> <code>value</code><code>=</code><code>"1"</code><code>/&gt;</code>

<code>        </code><code>&lt;!-- private String str; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"str"</code> <code>value</code><code>=</code><code>"hello world"</code><code>/&gt;</code>

<code>        </code><code>&lt;!-- private String[] strArr; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"strArr"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>list</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;NO.1&lt;/</code><code>value</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;NO.2&lt;/</code><code>value</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;NO.3&lt;/</code><code>value</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>list</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>property</code><code>&gt;</code>

<code>        </code><code>&lt;!-- private List&lt;String&gt; list; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"list"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;INDEX 1&lt;/</code><code>value</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;INDEX 2&lt;/</code><code>value</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;INDEX 3&lt;/</code><code>value</code><code>&gt;</code>

<code>        </code><code>&lt;!-- private Map&lt;String,Boss&gt; map; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"map"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>map</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>entry</code> <code>key</code><code>=</code><code>"entity 1"</code> <code>value-ref</code><code>=</code><code>"myBoss"</code><code>&gt;&lt;/</code><code>entry</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>entry</code> <code>key</code><code>=</code><code>"entity 2"</code> <code>value-ref</code><code>=</code><code>"myBoss"</code><code>&gt;&lt;/</code><code>entry</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>entry</code> <code>key</code><code>=</code><code>"entity 3"</code> <code>value-ref</code><code>=</code><code>"myBoss"</code><code>&gt;&lt;/</code><code>entry</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>map</code><code>&gt;</code>

<code>        </code><code>&lt;!-- private Set&lt;String&gt; set; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"set"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>set</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;set 1&lt;/</code><code>value</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;set 2&lt;/</code><code>value</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>value</code><code>&gt;set 3&lt;/</code><code>value</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>set</code><code>&gt;</code>

<code>        </code><code>&lt;!-- private Properties properties; --&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"properties"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>props</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>prop</code> <code>key</code><code>=</code><code>"key1"</code><code>&gt;value1&lt;/</code><code>prop</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>prop</code> <code>key</code><code>=</code><code>"key2"</code><code>&gt;value2&lt;/</code><code>prop</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>prop</code> <code>key</code><code>=</code><code>"key3"</code><code>&gt;value3&lt;/</code><code>prop</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>props</code><code>&gt;</code>

對于數組的注入,使用&lt;list&gt;&lt;value&gt;NO.1&lt;/value&gt;&lt;value&gt;NO.2&lt;/value&gt;&lt;value&gt;NO.3&lt;/value&gt;&lt;/list&gt; 和 &lt;array&gt; &lt;value&gt;NO.1&lt;/value&gt;&lt;value&gt;NO.2&lt;/value&gt;&lt;value&gt;NO.3&lt;/value&gt;&lt;/array&gt;是等同的。

測試類:

<code>package</code> <code>test;</code>

<code>import</code> <code>org.junit.Test;</code>

<code>import</code> <code>org.junit.runner.RunWith;</code>

<code>import</code> <code>org.springframework.beans.factory.annotation.Autowired;</code>

<code>import</code> <code>org.springframework.test.context.ContextConfiguration;</code>

<code>import</code> <code>org.springframework.test.context.junit4.SpringJUnit4ClassRunner;</code>

<code>import</code> <code>javax.annotation.Resource;</code>

<code>import</code> <code>beans.Bean;</code>

<code>import</code> <code>beans.Boss;</code>

<code>import</code> <code>business.BossService;</code>

<code> </code><code>* DESCRIPTION :</code>

<code> </code><code>* DATE : 2017/8/10 11:25</code>

<code>@RunWith(SpringJUnit4ClassRunner.class)</code>

<code>@ContextConfiguration(locations = { "classpath*:spring-content.xml" })</code>

<code>public class TestSpringBeans {</code>

<code>    </code><code>@Resource(name = "boss3")</code>

<code>    </code><code>private Boss boss;</code>

<code>    </code><code>@Autowired</code>

<code>    </code><code>private Boss boss2;</code>

<code>    </code><code>private Boss boss3;</code>

<code>    </code><code>private BossService bossService;</code>

<code>    </code><code>private Bean bean;</code>

<code>    </code><code>/**</code>

<code>     </code><code>* @Autowired 是根據bean的id,完全比對注入</code>

<code>     </code><code>* @Resource(name = "boss3") 指定nid比對注入</code>

<code>     </code><code>*/</code>

<code>    </code><code>@org.junit.Test</code>

<code>    </code><code>public void test(){</code>

<code>        </code><code>System.out.println("============test===============");</code>

<code>        </code><code>System.out.println(boss.toString());</code>

<code>        </code><code>System.out.println(boss2.toString());</code>

<code>        </code><code>System.out.println(boss3.toString());</code>

<code>        </code><code>//預設是單例的,如果需要是多例的需要設定scope="singleton"</code>

<code>        </code><code>System.out.println(boss == boss2);</code>

<code>        </code><code>System.out.println("=============test==============");</code>

<code>     </code><code>* 測試接口的注入,必須在xml種指定實作,不然Java中不予許對interface進行@Autowired</code>

<code>    </code><code>@Test</code>

<code>    </code><code>public void testInterface(){</code>

<code>        </code><code>System.out.println("============testInterface===============");</code>

<code>        </code><code>System.out.println(bossService.getBossEntity());</code>

<code>     </code><code>* 對數組 集合等各種類型的屬性進行注入</code>

<code>    </code><code>public</code> <code>void</code> <code>testBean(){</code>

<code>        </code><code>System.out.println(</code><code>"===========testBean================"</code><code>);</code>

<code>        </code><code>System.out.println(bean);</code>

執行結果:

<code>============test===============</code>

<code>Boss{name=</code><code>'null'</code><code>, age=</code><code>null</code><code>, isMale=</code><code>null</code><code>}</code>

<code>Boss{name=</code><code>'zhouhui2'</code><code>, age=</code><code>11</code><code>, isMale=</code><code>true</code><code>}</code>

<code>false</code>

<code>=============test==============</code>

<code>============testInterface===============</code>

<code>===========testBean================</code>

<code>Bean{inte=</code><code>1</code><code>, str=</code><code>'hello world'</code><code>, strArr=[NO.</code><code>1</code><code>, NO.</code><code>2</code><code>, NO.</code><code>3</code><code>], boss=Boss{name=</code><code>'zhouhui'</code><code>, age=</code><code>10</code><code>, isMale=</code><code>false</code><code>}, list=[INDEX </code><code>1</code><code>, INDEX </code><code>2</code><code>, INDEX </code><code>3</code><code>], set=[set </code><code>1</code><code>, set </code><code>2</code><code>, set </code><code>3</code><code>], map={entity </code><code>1</code><code>=Boss{name=</code><code>'zhouhui'</code><code>, age=</code><code>10</code><code>, isMale=</code><code>false</code><code>}, entity </code><code>2</code><code>=Boss{name=</code><code>'zhouhui'</code><code>, age=</code><code>10</code><code>, isMale=</code><code>false</code><code>}, entity </code><code>3</code><code>=Boss{name=</code><code>'zhouhui'</code><code>, age=</code><code>10</code><code>, isMale=</code><code>false</code><code>}}, properties={key3=value3, key2=value2, key1=value1}}</code>

本文轉自 斯然在天邊 51CTO部落格,原文連結:http://blog.51cto.com/13172906/1955195,如需轉載請自行聯系原作者