我们spring中的bean的配置类,可以使用一个Java类来代替,
写一个配置类
package com.dongmu.cofig;
import com.dongmu.vo.Student;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Configuraction {
@Bean
public Student getStu(){
Student student = new Student(1001,"三岁",12);
return student;
}
}
使用的时候:用AnnotationConfigApplicationContext
,bean的id如果在配置类中没有指定就是配置类中的方法名,也可以在@bean后面使用name属性指定对象的名称。
package com.dongmu.spring01;
import com.dongmu.cofig.Configuraction;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@SpringBootTest
class Spring01ApplicationTests {
@Test
void contextLoads() {
ApplicationContext context = new AnnotationConfigApplicationContext(Configuraction.class);
Object getStu = context.getBean("getStu");
System.out.println(getStu);
}
}
@ImportResource
还可以使用@ImportResource(locations = "classpath:application.xml")导入配置文件中的bean到配置类。这样也可以直接从容器中获取。
@PropertyResource
用来导入外部的配置文件,
定义一个配置文件config.properties
cat.age=3
cat.name=加菲猫
定义一个类
package com.dongmu.vo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component("cat")
@PropertySource(value = "classpath:config.properties")
public class Cat {
@Value("${cat.age}")
int age;
@Value("${cat.name}")
String name;
public Cat() {
}
@Override
public String toString() {
return "Cat{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Cat(int age, String name) {
this.age = age;
this.name = name;
}
}
使用:
package com.dongmu.spring01;
import com.dongmu.config.Configuraction;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
//@SpringBootTest
class Spring01ApplicationTests {
@Test
void contextLoads() {
ApplicationContext context = new AnnotationConfigApplicationContext(Configuraction.class);
Object getStu = context.getBean("getStu");
Object student = context.getBean("student");
Object cat = context.getBean("cat");
System.out.println(getStu);
System.out.println(student);
System.out.println(cat);
}
}
package com.dongmu.spring01;
import com.dongmu.config.Configuraction;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
//@SpringBootTest
class Spring01ApplicationTests {
@Test
void contextLoads() {
ApplicationContext context = new AnnotationConfigApplicationContext(Configuraction.class);
Object getStu = context.getBean("getStu");
Object student = context.getBean("student");
Object cat = context.getBean("cat");
System.out.println(getStu);
System.out.println(student);
System.out.println(cat);
}
}
中文乱码的话就修改idea的编码方式