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。
(本文仅作个人学习记录用,如有纰漏敬请指正)