zoukankan      html  css  js  c++  java
  • Java方式bean的注入以及自动配置

    Java配置

    Java配置的本质上,就是使用一个Java类去代替xml配置,这种配置方式在目前最主流的Spring Boot中得到了广泛的使用。
    1、引入相关Spring相关依赖

    2、创建Java配置类:

    /**
    * 这是一个Java配置类,它的作用类似于applicationContext.xml配置文件
    * @author 叶小陌
    *
    */
    @Configuration
    public class JavaConfig {
    /**
    * 返回一个JavaBean的方法就类似于applicationContext.xml中的一个bean标签
    * <bean class="com.sxt.bean.Book" id="book"/>
    * @return
    * 默认情况下,id就是方法名,可以通过@bean注解的value或者name属性自定义方法名
    */
    @Bean(name="book")
    public Book getBook(){
    return new Book();
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    3、加载Java配置

    public class Main1 {

    ApplicationContext ac;
    @Test
    public void test() {
    Book book = (Book) ac.getBean(Book.class);
    System.out.println(book);
    }
    @Before
    public void before(){
    ac = new AnnotationConfigApplicationContext(JavaConfig.class);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    自动配置

    xml 配置实现
    xml配置,主要通过四个注解,这四个注解,目前来说,功能是一样的:

    @Component,一般用在身份不明确的组件上
    @Service,一般用在Service层
    @controller,一般用在控制层
    @Repository,一般用在数据库访问层
    然后在xml文件中配置自动扫描:

    <context:component-scan base-package="com.sxt.bean"/>
    1
    如果有多个包需要扫描,多个包使用“,”隔开,也可以直接配置扫描父包。
    还可以配置扫描某个注解,如下:

    <context:component-scan base-package="com.sxt" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    </context:component-scan>
    1
    2
    3
    use-default-filters表示使用使用spring默认提供的过滤器,false表示不使用,true则表示使用。
    一般来说,true结合exclude-filter标签使用,表示除去某个注解
    false结合include标签使用,表示包含某个注解
    注意:Component是另外三个注解(Service、Controller、Repository)的父类。

    Java配置实现
    Java配置和xml配置基本一致,唯一不同的地方就是包扫描的方式。
    四个注解是一样的。
    包扫描是通过@ComponentScan来实现:

    @Configuration
    @ComponentScan("com.sxt.bean")
    public class JavaConfig {
    }
    1
    2
    3
    4
    Java配置一样可以实现精确的包扫描:

    @Configuration
    @ComponentScan(value="com.sxt.bean",useDefaultFilters=false,includeFilters={
    @ComponentScan.Filter(type=FilterType.ANNOTATION,value=Service.class)
    })
    public class JavaConfig {
    }
    1
    2
    3
    4
    5
    6

    ---------------------

  • 相关阅读:
    PHP笔记
    HTML5储存
    KeyDown,KeyPress和KeyUp详解(转)
    Vue.js和angular.js区别
    java 解析json的问题
    在Eclipse中使用JUnit4进行单元测试
    Ibatis代码自动生成工具——Abator安装与应用实例(图解)
    IT人员----怎么把电脑窗口设置成淡绿色
    Java面试题之数据库三范式是什么
    Java面试题之jsp相关
  • 原文地址:https://www.cnblogs.com/ly570/p/11179186.html
Copyright © 2011-2022 走看看