美文网首页
spring注释

spring注释

作者: 李霖神谷 | 来源:发表于2019-11-25 14:43 被阅读0次

1.autowired注释,它一般用于一个类需要其它类注入的时候
首先需要在xml文件中配置 <context:annotation-config/>
(1)@Autowired在set方法上设置,代替了set注入,不用再设置property

  private  teacher teacher;
    @Autowired
    public void setTeacher(teacher teacher) {
        this.teacher = teacher;

    }
public  void check(){

        teacher.spring();
    }
(2)直接在属性上设置,代替set方法
 @Autowired
    private  teacher teacher;
    public  void check(){

        teacher.spring();
    }

(3)也可以在构造函数中设置,这里不演示了
2.Qualifire注释:当需要注入的类存在多个版本的配置,这是需要autowired与qualifire一起使用,它的作用是指定需要哪个版本的配置。
xml配置:

 <context:annotation-config/>
    <bean id="student" class="com.shuai.hello.student">
            <property name="name" value="lishuai"></property>
            <property name="age" value="12"></property>
    </bean>
    <bean id="student2" class="com.shuai.hello.student">
        <property name="name" value="liqian"></property>
        <property name="age" value="12"></property>
    </bean>
    <bean name="teacher" class="com.shuai.hello.teacher"></bean>

需要注入的类:

public class teacher {
    @Autowired
    @Qualifier("student2")
    private student student;
    public  void printName(){
       System.out.println(student.getName());
   }
   public  void printAge(){
       System.out.println(student.getAge());
   }
}

测试:

 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        teacher teacher = (teacher) applicationContext.getBean("teacher");
        teacher.printName();
        teacher.printAge();

3.(1)基于java的注释:@Configuration和@Bean,这两个注释代替了在xml文件中配置bean的一个操作。
@Bean指定的方法的返回值,对应的是向spring容器中注入该类型的类

@Configuration
public class testConfig {
    @Bean
    public person testperson(){
        return  new person();
    }

}

测试:一旦定义了配置类就需要AnnotationConfigApplicationContext实现类需要testConfig.class的配置

 public static void main(String[] args) {
        ApplicationContext application=new AnnotationConfigApplicationContext(testConfig.class);
        person person=application.getBean(person.class);
        person.say();

(2)当存在一个类需要依赖与其它类的时候,@Configuration和@Bean,也可以解决,它是通过构造方法的形式传入所需要的依赖类
配置类:

@Configuration
public class testConfig {
    @Bean
   public Tr testTr(){
        return new Tr(testTe());
    }
    @Bean
    public  Te testTe(){
        return  new Te();
    }

}

对应的bean:

package com.shuai.hello;

public class Tr {
    private  Te te;

    public Tr(Te te) {
        System.out.println("lallal");
        this.te=te;
    }

    public void print(){
        te.printTe();
    }
public class Te {
    public void printTe(){
        System.out.println("我要打印");
    }
}

测试:

   ApplicationContext application=new AnnotationConfigApplicationContext(testConfig.class);
        Tr tr=application.getBean(Tr.class);
        tr.print();

4.@import注解,因为ApplicationContext application=new AnnotationConfigApplicationContext(testConfig.class);中只能配置一个配置类
使用@import可以导入其它的配置类并且将类注入到容器中

@Configuration
@Import(testConfig2.class)
public class testConfig {
    @Bean
   public Tr testTr(){
        return new Tr();
    }

@Configuration
public class testConfig2 {
    @Bean
    public Te testTe(){
        return new Te();
    }

相关文章

网友评论

      本文标题:spring注释

      本文链接:https://www.haomeiwen.com/subject/hfndwctx.html