使用JavaConfig实现配置
作者:互联网
使用JavaConfig实现配置
概述
本文主要讲述使用Config配置文件来代替xml配置文件,Config配置文件和xml配置文件功能一模一样,xml配置可能相对繁琐,每次要去官网拷贝外面的一层
先看代码
背景:一人一猫一狗
猫类
package com.kuangstudy.pojo;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/**
* 功能描述
*
* @since 2022-06-26
*/
@Component
@Scope("prototype")
public class Cat {
public void shout() {
System.out.println("miao~");
}
}
狗类
package com.kuangstudy.pojo;
import org.springframework.stereotype.Component;
/**
* 功能描述
*
* @since 2022-06-26
*/
@Component
public class Dog {
public void shout() {
System.out.println("wang~");
}
}
人类
package com.kuangstudy.pojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/**
* 功能描述
*
* @since 2022-06-26
*/
@Component
@Scope("prototype")
public class Person {
@Value("xiaohong")
private String name;
@Autowired(required = false)
private Cat cat;
//
@Autowired
private Dog dog;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", cat=" + cat +
", dog=" + dog +
'}';
}
}
配置类
package com.kuangstudy.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 功能描述
*
* @since 2022-06-29
*/
@Configuration
@ComponentScan("com.kuangstudy.pojo")
public class AppConfig {
// @Bean
// public Person getPerson() {
// return new Person();
// }
}
测试类
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.kuangstudy.config.AppConfig;
import com.kuangstudy.pojo.Person;
/**
* 功能描述
*
* @since 2022-06-29
*/
public class Test1 {
@Test
public void test1() {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
Person person = context.getBean("person", Person.class);
System.out.println(person.getName());
person.getCat().shout();
person.getDog().shout();
}
}
结果
xiaohong
miao~
wang~
重点分析
- 本示例中没有xml配置文件,而是用了一个AppConfig文件来代替,如果没有这个文件,测试会出错
- @Configuration和@ComponentScan是两个重点注解,@Configuration标识文件是一个配置文件,@ComponentScan指定bean的扫描路径,缺失任何一个都不行
- AppConfig.java中注释了几行代码,如果把注释打开,把Person类上的@Component注释掉,测试类中获取
getPerson
bean,也可以运行成功,这里涉及到@Bean的用法,不过@Bean不这样使用,而是用来获取一些Resource资源
标签:实现,配置,springframework,JavaConfig,Person,context,import,org,public 来源: https://www.cnblogs.com/Oh-mydream/p/16424673.html