Spring_02

Posted 寻渝记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring_02相关的知识,希望对你有一定的参考价值。

 

注意:注入基本类型值在本质上就是依赖注入,而且是利用的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,所以需要配置一下运行环境;只支持 构造器注入

 

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

  注解扫描

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

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

  

本博客源代码:点击前往

 







以上是关于Spring_02的主要内容,如果未能解决你的问题,请参考以下文章

阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合

SRPING02_配置数据源原始注解开发新注解开发集成Junit代码实现

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

阶段3 2.Spring_02.程序间耦合_2 编译期依赖

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段