1. 程式人生 > 其它 >uniapp中元件屬性設定不生效的解決方案

uniapp中元件屬性設定不生效的解決方案

Spring學習筆記01

一、Spring

Spring是一個開源的免費框架;Spring是一個輕量級的非入侵式的框架;控制反轉ioc,面向切片程式設計AOP;支援事務的處理對框架整合的支援。

二、IOC建立物件的方式

1.預設方式是使用無參構造方法建立物件

2.當實體類中有有參構造方法時:

    <!--第一種方式通過下標索引賦值-->
    <bean id="user1" class="com.hx.pojo.User" name="blinks">
        <constructor-arg index="0" value="JENNIE"/>
        <constructor-arg index="1" value="female"/>
    </bean>

    <!--第二種方式通過引數型別建立(不推薦)-->
    <bean id="user2" class="com.hx.pojo.User" name="blinks">
        <constructor-arg type="java.lang.String" value="LISA"/>
        <constructor-arg type="java.lang.String" value="female"/>
    </bean>

    <!--第三章方式通過引數名建立-->
    <bean id="user3" class="com.hx.pojo.User" name="blinks">
        <constructor-arg name="name" value="BP"/>
        <constructor-arg name="gender" value="female"/>
    </bean>

三、applicationContext.xml檔案配置

1.起別名

見下例

方式一:

<!--將user1替換成qwertyu-->
<alias name="user1" alias="qwertyu"/>

方式二(bean的配置):

    <!--將user3替換成blinks-->
    <bean id="user3" class="com.hx.pojo.User" name="blinks">
        <constructor-arg name="name" value="BP"/>
        <constructor-arg name="gender" value="female"/>
    </bean>

四、依賴注入

1.構造器注入

2.set方式注入

    <bean id="student" class="com.hx.pojo.Student">
        <!--普通注入-->
        <property name="name" value="JENNIE"/>

        <!--bean注入-->
        <property name="address" ref="address"/>

        <!--陣列注入-->
        <property name="books">
            <array>
                <value>LIGHT UP THE SKY</value>
                <value>THE MOVIE</value>
                <value>THE SHOW</value>
            </array>
        </property>

        <!--LIST注入-->
        <property name="hobbys">
            <list>
                <value>SING</value>
                <value>DANCE</value>
                <value>TAKE PHOTO</value>
            </list>
        </property>

        <!--MAP注入-->
        <property name="card">
            <map>
                <entry key="idNum" value="0327"/>
                <entry key="bankCard" value="123456789"/>
            </map>
        </property>

        <!--SET注入-->
        <property name="games">
            <set>
                <value>LOL</value>
                <value>CF</value>
                <value>NZ</value>
            </set>
        </property>

        <!--NULL值注入-->
        <property name="wife">
            <null/>
        </property>

        <!--Properties注入-->
        <property name="info">
            <props>
                <prop key="practiceNum">0327</prop>
                <prop key="solo">LALISA</prop>
                <prop key="gender">female</prop>
                <prop key="nickName">lalalalisa</prop>
            </props>
        </property>
    </bean>

3.拓展方式注入(p名稱空間注入和c名稱空間注入)

<?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:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--P名稱空間注入-->
    <bean id="user" class="com.hx.pojo.User" p:name="LISA" p:age="18"/>

    <!--C名稱空間注入-->
    <bean id="user2" class="com.hx.pojo.User" c:name="JENNIE" c:age="20" scope="singleton"/>

</beans>

p名稱空間注入和c名稱空間注入時標頭檔案需要加入這兩個url

五、Bean的作用域

①單例模式"singleton":(Spring預設機制)建立的物件均為同一個

<bean id="user2" class="com.hx.pojo.User" c:name="JENNIE" c:age="20" scope="singleton"/>

②原型模式"prototype":每次從容器中get的時候都會建立一個新的物件

<bean id="user2" class="com.hx.pojo.User" c:name="JENNIE" c:age="20" scope="prototype"/>

③其餘的request、session、application在web開發中使用到

六、Bean的自動裝配

自動裝配:自動裝配是Spring滿足bean依賴的一種方式,Spring會在上下文中自動尋找並自動給bean裝配屬性

1.在xml中顯示的配置

<bean id="person" class="com.hx.pojo.Person" autowire="byName"/>

byName:需要保證所有bean的id唯一,並且這個bean需要和自動注入的屬性的set方法一致

byType:需要保證所有的bean的class一致,並且這個bean需要和自動注入的屬性的型別一致

2.使用註解自動裝配

第一步:xml標頭檔案匯入約束並配置註解的支援(重點)

標準的applicationContext.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <context:annotation-config/>
    
    <bean id="cat" class="com.hx.pojo.Cat"/>
    <bean id="dog" class="com.hx.pojo.Dog"/>

    <bean id="person" class="com.hx.pojo.Person"/>
</beans>

第二步:在屬性上加上註解@Autowired

    @Autowired
    private Cat cat;
    @Autowired
    private Dog dog;
    private String name;

自動裝配的環境比較複雜時可以配合@Qualifier註解一起使用:自動裝配無法通過一個註解@Autowired完成的時候就可以使用@Qualifier(value="xxx")去指定一個唯一的bean物件注入

    @Autowired
    @Qualifier(value = "cat1")
    private Cat cat;
    @Autowired
    private Dog dog;
    private String name;

@Resource註解也可以實現自動裝配

@Resource和@Autowired的區別:都是用來自動裝配的,都可以放在屬性欄位上,@Autowired通過byName方式實現,要求這個物件存在@Resource預設通過byName方式實現,如果找不到這個名字則通過byType實現,如果兩個都找不到就會報錯。

七、註解開發

註解

1.@Component Component 元件 等價於

<bean id="user" class="com.hx.pojo.User"/>

2.@Value("LISA") 相當於

<property name="name" value="LISA"/>

3.@Component的幾個衍生註解:@Repository @Service @Controller這些註解功能都是一樣的,代表將這些類註冊到Spring中裝配bean

自動裝配註解

1.@Autowired
2.@Nullable:該註解標記的欄位允許為null
3.@Qualifler(value="xxx")配合@Autowired註解一起可以適用於自動裝配環境比較複雜的情況
4.@Resource註解:@Resouce(name = "xxx")

作用域註解

1.@Scope