spring基础回顾之路 one

1.spring  依赖注入 的几种方式:

1.1构造函数:

package com.tutorialspoint;
public class TextEditor {
   private SpellChecker spellChecker;
   public TextEditor(SpellChecker spellChecker) {
      System.out.println("Inside TextEditor constructor." );
      this.spellChecker = spellChecker;
   }
   public void spellCheck() {
      spellChecker.checkSpelling();
   }
}


 <!-- Definition for textEditor bean -->
   <bean id="textEditor" class="com.tutorialspoint.TextEditor">
      <constructor-arg ref="spellChecker"/>
   </bean>

   <!-- Definition for spellChecker bean -->
   <bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
   </bean>

1.2 set方式:

package com.tutorialspoint;
public class TextEditor {
   private SpellChecker spellChecker;
   // a setter method to inject the dependency.
   public void setSpellChecker(SpellChecker spellChecker) {
      System.out.println("Inside setSpellChecker." );
      this.spellChecker = spellChecker;
   }
   // a getter method to return spellChecker
   public SpellChecker getSpellChecker() {
      return spellChecker;
   }
   public void spellCheck() {
      spellChecker.checkSpelling();
   }
}
package com.tutorialspoint;
public class SpellChecker {
   public SpellChecker(){
      System.out.println("Inside SpellChecker constructor." );
   }
   public void checkSpelling() {
      System.out.println("Inside checkSpelling." );
   }  
}

<bean id="textEditor" class="com.tutorialspoint.TextEditor"> 
<property name="spellChecker" ref="spellChecker"/> </bean>

1.3内部bean(注意下):

<bean id="textEditor" class="com.tutorialspoint.TextEditor"> <property name="spellChecker"> <bean id="spellChecker" class="com.tutorialspoint.SpellChecker"/> </property> </bean>

2自动装配

2.1 byName  :

通过set的方法 获取名字,然后在xml文件中添加  <bean id=" ---" class ="----"  autowire="byName"></bean> 就可以了。

通过bean的id  和name

<bean id="textEditor" class="com.tutorialspoint.TextEditor" autowire="byName"> <property name="name" value="Generic Text Editor" /> </bean>

2.2 byType :  

<bean id=" ---" class ="----"  autowire="byType"></bean> 就可以了。

通过bean的class来确定。

2.3 通过构造函数自动装配:

<bean id="textEditor" class="com.tutorialspoint.TextEditor" autowire="constructor">

<constructor-arg value="Generic Text Editor"/> </bean>

3.基于注解:

首先,个人粗浅的认为,spring2.0新添的的注解功能让spring编码提高了一大截,而就目前来看注解功能的确牛逼且受欢迎。打call!

3.1 第一步:

<context:annotation-config/> <!-- bean definitions go here -->把这句话填上

3.2 注释 :

@Required  当注解在set方法中,但是没有在配置中解释的话,那么就会抛出异常。(用于检测有没有在xml文件中进行配置)

@Autwride 注解可以作用于变量上,(就免去了写set方法); 可以作用在构造函数上; 当然,也不用在配置文件的bean下面在声明了。

也可以作用在set方法上,值得注意的@Autowired 的 (required=false) ,即是变量没有传递参数也可以成功运行。

@Qualifier 注释

可能会有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱。(就是指定id);such as

@Autowired

@Qualifier("student1")

3.3 基于java的配置:

借助@Configuration(作用在类) 和 @Bean(作用在方法上 代替bean实例) 注解来代替xml配置.

还有其他的such as

@scope

 @Bean(initMethod = "init", destroyMethod = "cleanup" )

4.spring 事物的传播行为

一共七种。分为两大类,保证在同一个事物中,和保证不再同一个事物中。

 

保证在同一个事物中:

支持当前事物,如果不存在就新建一个事物。

支持当前事物,如果不存在则抛出异常。

支持当前事物,如果不存在就以非事物执行。

 

保证不再同一个事物中:

如果当前存在事物,则挂起,执行新的事物。

如果当前存在事物,则挂起,以非事物执行。

如果当前存在事物,则抛出异常。

如果当前存在事物,则嵌套执行事物

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值