09、使用Java的方式配置Spring
不使用Spring的xml配置,完全使用Java来做!
JavaConfig是Spring的一个子项目,在Spring 4 之后,它成为了一个核心功能。
实体类
//“getUser”拿到是因为@bean已经注册了,把component注解去掉一样可以拿到
//意思是这个类被Spring接管了,注册到了容器中
@Component //配置类中加@Bean了就可以不加@Component也能运行, 因为@Bean已经注册了
public class User {
private String name;
public String getName() {
return name;
}
@Value("yuhaiyang666") //属性注入值
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
配置文件(配置类)
//@Configuration代表这是一个配置类,相当于之前的beans.xml配置文件
//这个也会被Spring托管,注册到容器中,因为它本质上也是@Component
@Configuration
//自动扫描@Component并生成Bean,如果下面的@Bean不加也能成功运行,bean id = user,加了的话二者都可以用
@ComponentScan("com.haining820.pojo") //加了这个实体类就必须要加@Component,扫描的就是这个注解,不加找不到
@Import(MyConfig2.class)
public class MyConfig {
//注册一个bean,就相当于之前写的一个bean标签
//这个方法的名字就相当于bean标签中的id属性
//这个方法的返回值就相当于bean标签中的class属性
//@Bean后边不加别的内容就默认使用getUser作为bean id
//加内容了用加的别名作为bean id, 这里的bean id = beanName
@Bean ("beanName")
public User getUser(){
return new User(); //就是返回要注入到bean中的对象!
}
}
测试类
public class MyTest {
@Test
public void test1(){
//如果完全使用了配置类方式去做,就只能通过AnnotationConfig上下文来获取容器,通过配置类的class文件加载!
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
User getUser = context.getBean("beanName", User.class);
User user = context.getBean("user", User.class);
System.out.println(getUser.hashCode());
System.out.println(user.hashCode());
System.out.println(getUser.getName());
System.out.println(user.getName());
}
}
这种纯 Java的配置方式,在SpringBoot中随处可见!
本文章内容整理自b站up主:遇见狂神说,欢迎关注,一键三连!