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"/>

     

    本博客源代码:点击前往

  • 相关阅读:
    SQL语言基础
    selenium webdriver (python) 第二版
    selenium-webdriver(python) (十六) --unittest 框架
    从用户感知谈软件性能测试
    selenium webdriver (python) 第一版PDF
    selenium-webdriver(python) (十五) -- 鼠标事件
    selenium-webdriver(python) (十四) -- webdriver原理
    如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)
    如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)
    新书发布《每天5分钟玩转Docker容器技术》
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/6849953.html
Copyright © 2011-2022 走看看