JavaConfig是什么详解

kekenai
发布于 2020-8-30 15:58
浏览
0收藏

1、JavaConfig简介

首先JavaConfig是Spring的一个子项目,并且在Spring4之后成为一个核心功能

在这里我们给出JavaConfig中使用的注解:

@Configuration

在类上打上这一标签,表示这个类是配置类
@ComponentScan

相当于xml的

<context:componentscan basepakage=""/>

@Import(MyConfig2.class)

导入其他的配置类,合并配置信息,相当于xml中的

<import resource="xxx.xml"/>

@Bean

bean的定义,相当于xml的

<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" /> 

@EnableWebMvc

相当于xml的

<mvc:annotation-driven/>

@ImportResource

相当于xml的

<import resource="applicationContext-cache.xml"/>

@PropertySource

spring 3.1开始引入,它是基于java config的注解,用于读取properties文件
@Profile

spring3.1开始引入,一般用于多环境配置,

激活时可用@ActiveProfiles注解,@ActiveProfiles("dev")

等同于xml配置

<beans profile="dev">
    <bean id="beanname" class="com.pz.demo.ProductRPC"/>
</beans>

<!--激活该profile spring.profiles.active,也可设置默认值 spring.profiles.default-->
<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>dev</param-value>
</context-param>

XML配置唯一的问题是,只有在运行时环境时你才能发现各种配置及语法错误,但是如果使用JavaConfig的方式的话,它会在编码时提示这些问题。

JavaConfig类能互相import合并配置或是继承并重写其中的Bean方法。

这种Java配置类的方式就不需要使用Spring的xml配置了, 全部由Java类+注解的方式实现,实现如下:

实体类:

@Component  //注入bean
public class User {
    private String name;

    public String getName() {
        return name;
    }

    @Value("ps")    //属性值注入
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

配置类:

@Configuration  //Configuration代表这是一个配置类,就如applicationContext.xml
@ComponentScan("com.spong.pojo")  //扫描指定包下的使用注解注入的类
@Import(MyConfig2.class)  //导入其他的配置类,配置信息合并
public class MyConfig {

    //注册一个bean,相当于xml中的bean标签
    //方法名就相当于bean中的id
    //返回值就相当于bean中的class
    @Bean
    public User getUser(){
        return new User();  //返回要注入到bean的对象
    }
}

测试类:

public class MyTest {
    public static void main(String[] args) {
        //如果完全使用了配置类配置,就只能通过AnnotationConfig的上下文对象获取容器,通过配置类的class对象来加载bean
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
        User user =  context.getBean("getUser",User.class);
        System.out.println(user);
    }
}

注意:在Web环境中,需要在web.xml中加入如下代码:

<context-param>  
    <param-name>contextClass</param-name>  
    <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>  
</context-param>  
<context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>com.packtpub.learnvaadin.springintegration.SpringIntegrationConfiguration</param-value>  
</context-param> 


如有错误,欢迎大佬指正!

分类
已于2020-9-1 16:31:56修改
收藏
回复
举报
回复
    相关推荐