Spring(十二):使用JavaConfig实现配置

上一篇文章我们学习了使用注解开发,但还没有完全脱离xml的配置,现在我们来学习JavaConfig配置来代替xml的配置,实现完全注解开发。

下面我们用一个简单的例子来进行学习。

 一、首先建立两个实体类

User:

package com.jms.pojo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class User {
    @Value("jms")
    private String name;
    private Address address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Address getAddress() {
        return address;
    }
    @Autowired
    public void setAddress(Address address) {
        this.address = address;
    }

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

Address:

package com.jms.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class Address {
    @Override
    public String toString() {
        return "Address{" +
                "id=" + id +
                '}';
    }

    @Value("100")
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

两个简单的类,并且实现了值的注入和Bean的自动装配。

二、建立一个配置类

package com.jms.config;

import com.jms.pojo.Address;
import com.jms.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//@Configuration代表他是一个配置类,可以看作原来的xml文件,它本身还是一个@Component,所以它也被注册到Spring容器中,由Spring容器托管
@ComponentScan("com.jms.pojo")
@Configuration
public class JmsConfig {

    //这一个方法就相当于xml中的一个Bean标签,方法名对应id属性,返回值对应class属性
    @Bean
    public Address address() {
        return new Address();
    }

    @Bean
    public User getUser() {
        return new User();
    }
}

这个配置类的作用就是代替原来的xml配置文件,所以xml文件中有的功能这里基本上都可以配置。

上面只简单配置了最基础的Bean和ComponentScan扫描包。

三、测试

@Test
    public void test1() {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(JmsConfig.class);
        User user = applicationContext.getBean("getUser", User.class);
        System.out.println(user);
    }

 

注意点:

1.我们new的不再是ClassPathXmlApplicationContext对象,而是AnnotationConfigApplicationContext;

2.getBean方法中传入的是配置类里的方法名,因为方法名对应原来xml里的id。

 

(本文仅作个人学习记录用,如有纰漏敬请指正)

posted @ 2022-09-26 19:01  谁知道水烫不烫  阅读(219)  评论(0编辑  收藏  举报