美文网首页SpringBoot云课堂
Spring的两种配置方式——基于注解配置和基于JAVA配置

Spring的两种配置方式——基于注解配置和基于JAVA配置

作者: Tommmmm | 来源:发表于2018-02-12 15:24 被阅读48次

Spring的两种配置方式

1、基于注解的配置

配置类DoConfig

@Configuration
@ComponentScan("com.example")
public class DoAnnoConfig {

}

测试代码

   @Test
    public void test() {
        AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(DoAnnoConfig.class);
        LowerAction lowerAction=ctx.getBean(LowerAction.class);
        lowerAction.execute("Rod Johnson");
    }
测试结果 测试结果

实验中想到的问题1:@ComponentScan的作用是什么?
@ComponentScan扫描包名下的所有类,把有注解声明的类加载到Spring容器中。
packages下用注解标识的类,由spring自动扫描并且装入bean容器。

实验中想到的问题2:既然@ComponentScan可以扫描包下的类并装入Bean容器,那么配置类上一定需要@Configuration注解吗?
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法。
Spring提供了一个AnnotationConfigApplicanContext类,能够直接通过标注@Configuration的Java类启动Spring容器。

测试代码

    @Test
    public void test1(){
        AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(DoAnnoConfig.class);
    }

测试结果

测试结果
由实验结果可见,Spring容器已启动。@Configuration作用为配置spring容器。因此必不可缺。

2、基于JAVA的配置

配置类DoJavaConfig

@Configuration
public class DoJavaConfig {
    @Bean(name = "UpperAction")
    public UpperAction upperAction(){
        return  new UpperAction();
    }
}

测试代码

  @Test
    public void test() {
        AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(DoJavaConfig.class);
        UpperAction upperAction=ctx.getBean(UpperAction.class);
        upperAction.execute("hahahaha");
    }

想到的问题1
@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的<bean>。作用为注册bean对象。
既然@Bean的作用是注册bean对象,那么完全可以使用@Component、@Controller、@Service等注解注册bean,那么就需要配置@ComponentScan注解进行自动扫描。
那么基于JAVA的配置与基于注解的配置有什么区别呢?

图1
图2
图3

实验中碰到的问题1:直接使用@Autowired注解修饰“Action”来注入Action,Spring容器报错

报错
由于有多个类实现了Action接口,所以Spring不知道应该绑定哪个实现类,所以抛出了如上错误。
解决方法:
解决方法
使用Qualifier注解
实验中碰到的问题1:使用@Service注解修饰LowerAction和UpperAction,对于基于“Java配置”的方式是否是必须的?
不是必须的。@Service可以将一个类定义成一个bean,实例化并放入容器。而配置类中的@Bean把实例化的对象转化成一个Bean,放在IoC容器中。

3、结合前一章的两种注入方法输出hello

在之前的实验中
测试代码形式如下:

   @Test
    public void test() {
        AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(DoAnnoConfig.class);
        LowerAction lowerAction=ctx.getBean(LowerAction.class);
        lowerAction.execute("Rod Johnson");
    }
因为LowerAction的成员message均没有值,测试结果均如下: 测试结果

因此可以通过以下方法输出hello

通过@Value注解 构造方法注入 Setter()注入

4、本章小结

Spring容器启动有三要素:Bean的定义,Bean的实现,Spring容器。
在基于XML的bean属性配置中,bean的定义信息与bean的实现类是分离的。

相关文章

  • Spring学习笔记

    Spring基于XML方式的容器配置 Spring基于注解方式的容器配置 Spring基于Java方式的容器配置

  • Spring 注解使用

    常用注解 Spring中有三种配置方式:基于XML的配置、基于注解的配置、基于Java的配置。 使用原则: 1、S...

  • SpringBoot源码分析-004 创建容器

    第三步: 总结: Spring bean配置方式有三种:基于XML的配置方式 、基于注解的配置方式和基于Java类...

  • Spring XML、注解、Java类 配置

    配置Spring一般包括3中方式 基于XML的配置文件 基于注解的配置 基于Java的配置 基于XML的配置 这个...

  • Spring

    Spring配置Bean的方式有两种,第一种是配置xml文件,第二种是基于java注解的配置方式 基于XML配置b...

  • Spring面试题和答案<3>

    Spring注解 36. 什么是基于Java的Spring注解配置? 给一些注解的例子. 基于Java的配置,允许...

  • Spring中的Bean的配置形式

    Spring中Bean的配置形式有两种,基于XML文件的方式和基于注解的方式。 1.基于XML文件的方式配置Bea...

  • Spring装配有三种方式

    Spring装配有三种方式: 基于XML的显式配置 基于注解的自动装配 在java中进行显示配置 1、基于注解的自...

  • Spring配置元数据的三种方式

    基于java配置方式 基于注解方式 基于xml方式

  • Spring面试题和答案——Spring注解(4)

    什么是基于Java的Spring注解配置? 给一些注解的例子. 基于Java的配置,允许你在少量的 Java注解 ...

网友评论

    本文标题:Spring的两种配置方式——基于注解配置和基于JAVA配置

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