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

 

本博客源代码:点击前往

 

posted @ 2017-05-13 19:09  寻渝记  阅读(548)  评论(0编辑  收藏  举报