日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用Java方式配置Spring

 路人甲Java 2021-05-16

我們之前使用的Spring的XMl配置創(chuàng)建管理Bean,但Spring支持Java方式實現(xiàn)這個功能!

JavaConfig原來是 Spring 的一個子項目,它通過 Java 類的方式提供 Bean 的定義信息,在Spring4之后的版本, JavaConfig已正式成為Spring的核心功能 。

image-20210120172902668

JavaConfig的核心注解@Configuration,它的源碼如下

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    @AliasFor(annotation = Component.class)
String value() default "";
    
boolean proxyBeanMethods() default true;
}

通過源碼我們可以看出:

@Configuration是元注解,它有很多其他的注解實現(xiàn),有一個就是@Component,說明它也會被Spring容器托管,注冊到容器中。

@Configuration代表這是一個配置類,就和Spring的applicationContext.xml一樣

1、創(chuàng)建Bean

  1. 編寫一個實體類

    @Component // 添加@Component注解,交給Spring托管
    public class User {
        private String name;
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    '}';
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
  2. 新建一個config包,編寫一個AppConfig類

    @Configuration // @Configuration表示這是一個配置類
    public class AppConfig {
        // 通過方法注冊一個bean。
        // 方法的返回值就Bean的類型,方法名就是bean的id!
        @Bean
        public User getUser(){
            return new User(); // 返回要注入到Bean的對象
        }
    }
    

    上面的getUser()方法就相當于XML的

    <beans>
        <bean id="myService" class="com.acme.services.MyServiceImpl"/>
    </beans>
    
  3. 測試

    @Test
    public void test01() throws Exception{
        // 使用AnnotationConfigApplicationContext獲取容器
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        User user = context.getBean("getUser");
        System.out.println(user);
    }
    

2、其他配置

2.1、導入其他配置類

@Configuration
@Import({WebConfig.class})
public class AppConfig {
    //bean definition...
}

它就相當于

<beans>
    <import resource="WebConfig.xml"/>
</beans>

2.2、配置包注解掃描

@Configuration
@ComponentScan("com.acme.app.services")
public class AppConfig {
    // various @Bean definitions ...
}

它就相當于

<context:component-scan base-package="com.acme.app.services"/>

2.3、其他詳細配置

關于javaConfig的方式,詳情請見這篇博客:使用JavaConfig形式配置Spring框架,了解一下

關于這種Java類的配置方式,我們在之后的SpringBoot 和 SpringCloud中還會大量看到,我們需要知道這些注解的作用即可!

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多