zoukankan      html  css  js  c++  java
  • Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描

    注意:注入基本类型值在本质上就是依赖注入,而且是利用的set方式进行的依赖注入

    1 注入基本类型的值

      <property name="基本类型的成员变量名" value="值"/>

    2 注入集合类型的值(直接注入)

      2.1 注入list类型的值

    1             <property name="interest">
    2       <list>
    3         <value>钓鱼</value>
    4         <value>做饭</value>
    5         <value>看电视</value>
    6         <value>看电视</value>
    7       </list>
    8     </property>        
    注入list类型的配置文件格式

      2.2 注入set类型的值

    1 <property name="city">
    2     <set>
    3         <value>北京</value>
    4         <value>长沙</value>
    5         <value>武汉</value>
    6         <value>武汉</value>
    7     </set>
    8 </property>                
    注入set类型的配置文件格式

      2.3 注入map类型的值

    1 <property name="score">
    2     <map>
    3         <entry key="英语" value="80"/>
    4        <entry key="math" value="90"/>
    5     </map>
    6 </property>    
    注入map类型的配置文件格式

      2.4 注入properties类型的值

    1 <property name="db">
    2     <props>
    3         <prop key="username">King</prop>
    4         <prop key="password">1234</prop>
    5     </props>
    6 </property>
    注入properties类型的配置文件格式

    3 注入集合类型的值(利用引用注入)

     1 <util:list id="interestBean">
     2         <value>游泳</value>
     3         <value>台球</value>
     4         <value>编程</value>
     5     </util:list>
     6     <util:set id="cityBean">
     7         <value>北京</value>
     8         <value>长沙</value>
     9         <value>南昌</value>
    10     </util:set>
    11     <util:map id="scoreBean">
    12         <entry key="english" value="80"/>
    13         <entry key="math" value="90"/>
    14     </util:map>
    15     <util:properties id="dbBean">
    16         <prop key="username">Sally</prop>
    17         <prop key="password">1234</prop>
    18     </util:properties>
    19     <!-- 
    20         以引用的方式注入集合类型的值。
    21      -->
    22     <bean id="vb2" class="value.ValueBean">
    23         <property name="interest" 
    24         ref="interestBean"/>
    25         <property name="city"
    26         ref="cityBean"/>
    27         <property name="score"
    28         ref="scoreBean"/>
    29         <property name="db"
    30         ref="dbBean"/>
    31     </bean>
    利用引用给集合类型注入值的配置文件格式

    4 利用注解进行简化配置

      4.1 与类有关的4个注解

        @respository("id属性值")  -> 用于持久层

        @controller("id属性值")  -> 用于控制层
        @service("id属性值")  -> 用于服务层
        @component("id属性值")  -> 通吃

        注意:id属性值 一般是 类的首字母小写后的结果

      4.2 其他注解  

        @Scope("singleton") -->> 设置作用域
        @Lazy(true) -->> 设置延迟加载
        @PostConstruct -->> 设置初始化方法
        @PreDestroy -->> 设置销毁方法
        @Value("warrior") -->> 给成员变量注入值

    5 使用spring表达式去读取其他bean的属性

     1 <bean id="sb1" class="value.SpelBean">
     2         <property name="name" 
     3         value="#{vb1.name}"/>
     4         <property name="interest"
     5         value="#{vb1.interest[1]}"/>
     6         <property name="score"
     7         value="#{vb1.score['英语']}"/>
     8         <property name="pageSize"
     9         value="#{config['jdbc.pagesize']}"/>
    10 </bean>
    spring表达式

    6 依赖注入

      6.1 @Autowired 和 @Qualifier("student")

        直接将这两行写到 注入变量上面就行啦;支持 set注入 和 构造器注入

      6.2 @Resource(name="student")  -->> 一般都用这个

        Resource 的包在 servlet-api.jar,所以需要配置一下运行环境;只支持 构造器注入

          Tomcat的运行环境自带了 servlet-api.jar 这个包,这个包里面就有使用Resource注解时需要的jar包

          如果运行环境不是Tomcat,那么就需要单独导入Resource注解需要的那个jar包,这个jar包是:javax.annotation-api

        

        图解:需要将B依赖注入到A中,在A中需要添加一个类型是B的成员变量,在该成员变量上面添加依赖注解@Resource(name="B的id")即可;不需要在A中为该成员变量实现set方法或者有参构造器(依赖注入的有参构造器),容器如果用到set方法或者有参构造器时它自己会想办法得到的,但是B中必须实现无参构造器,因为spring容器在创建实例时必须用到无参构造器。

    7 使用了注解后必须在spring配置文件中配置注解扫描

      注解扫描

        容器会扫描指定包及其子包下面的所有的类,如果类前面添加了特定的注解(比如@Component),则容器会将这个类纳入容器进行管理(相当于配置了一个bean,其中,bean的id默认值等于首字母小写之后的类名)

      <context:component-scan base-package="annotation"/>

     

    本博客源代码:点击前往

  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/6849953.html
Copyright © 2011-2022 走看看