Skip to content

Commit 30d1e92

Browse files
author
nononi
committed
作业8
1 parent 931c404 commit 30d1e92

7 files changed

Lines changed: 221 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package io.nononi.starter;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class Klass {
7+
private int id;
8+
List<Student> students;
9+
10+
public Klass(int id) {
11+
this.id = id;
12+
this.students = new ArrayList<>();
13+
}
14+
15+
public int getId() {
16+
return id;
17+
}
18+
19+
public void setId(int id) {
20+
this.id = id;
21+
}
22+
23+
public List<Student> getStudents() {
24+
return students;
25+
}
26+
27+
public void setStudents(List<Student> students) {
28+
this.students = students;
29+
}
30+
31+
public void addStudent(Student student) {
32+
students.add(student);
33+
}
34+
35+
@Override
36+
public String toString() {
37+
return "Klass{" +
38+
"id=" + id +
39+
", students=" + students +
40+
'}';
41+
}
42+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.nononi.starter;
2+
3+
import java.util.List;
4+
5+
public class School {
6+
private List<Klass> klasses;
7+
8+
public School(List<Klass> klasses) {
9+
this.klasses = klasses;
10+
}
11+
12+
13+
public List<Klass> getKlasses() {
14+
return klasses;
15+
}
16+
17+
public void setKlasses(List<Klass> klasses) {
18+
this.klasses = klasses;
19+
}
20+
21+
@Override
22+
public String toString() {
23+
return "School{" +
24+
"klasses=" + klasses +
25+
'}';
26+
}
27+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package io.nononi.starter;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
import org.springframework.context.annotation.PropertySource;
9+
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
import java.util.Map;
13+
14+
@Configuration
15+
@EnableConfigurationProperties(SchoolProperties.class)
16+
@ConditionalOnProperty(prefix = "school", value = "enabled", havingValue = "true")
17+
@PropertySource("classpath:application.properties")
18+
public class SchoolAutoConfiguration {
19+
20+
@Autowired
21+
private SchoolProperties schoolProperties;
22+
23+
@Bean
24+
public School school() {
25+
List<Integer> studentIds = schoolProperties.getStudentIds();
26+
List<String> studentNames = schoolProperties.getStudentNames();
27+
List<Integer> klassIds = schoolProperties.getKlassIds();
28+
List<Map<String, Integer>> studentKlassRelation = schoolProperties.getStudentKlassRelation();
29+
30+
List<Student> students = new ArrayList<>(studentIds.size());
31+
for (int i = 0; i < studentIds.size(); i++) {
32+
students.add(new Student(studentIds.get(i), studentNames.get(i)));
33+
}
34+
35+
List<Klass> klasses = new ArrayList<>();
36+
for (int i = 0; i < klassIds.size(); i++) {
37+
klasses.add(new Klass(klassIds.get(i)));
38+
}
39+
40+
for (Map relation : studentKlassRelation) {
41+
klasses.get((Integer) relation.get("klassId")).addStudent(students.get((Integer) relation.get("studentId")));
42+
}
43+
44+
System.out.println(studentIds.toString());
45+
System.out.println(studentNames.toString());
46+
System.out.println(klassIds.toString());
47+
System.out.println(studentKlassRelation.toString());
48+
49+
return new School(klasses);
50+
}
51+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package io.nononi.starter;
2+
3+
import org.springframework.boot.context.properties.ConfigurationProperties;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
@ConfigurationProperties(prefix = "school")
9+
public class SchoolProperties {
10+
private List<Integer> studentIds;
11+
private List<String> studentNames;
12+
private List<Integer> klassIds;
13+
private List<Map<String, Integer>> studentKlassRelation;
14+
15+
public List<Integer> getStudentIds() {
16+
return studentIds;
17+
}
18+
19+
public void setStudentIds(List<Integer> studentIds) {
20+
this.studentIds = studentIds;
21+
}
22+
23+
public List<String> getStudentNames() {
24+
return studentNames;
25+
}
26+
27+
public void setStudentNames(List<String> studentNames) {
28+
this.studentNames = studentNames;
29+
}
30+
31+
public List<Integer> getKlassIds() {
32+
return klassIds;
33+
}
34+
35+
public void setKlassIds(List<Integer> klassIds) {
36+
this.klassIds = klassIds;
37+
}
38+
39+
public List<Map<String, Integer>> getStudentKlassRelation() {
40+
return studentKlassRelation;
41+
}
42+
43+
public void setStudentKlassRelation(List<Map<String, Integer>> studentKlassRelation) {
44+
this.studentKlassRelation = studentKlassRelation;
45+
}
46+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.nononi.starter;
2+
3+
public class Student {
4+
private int id;
5+
private String name;
6+
7+
public int getId() {
8+
return id;
9+
}
10+
11+
public void setId(int id) {
12+
this.id = id;
13+
}
14+
15+
public String getName() {
16+
return name;
17+
}
18+
19+
public void setName(String name) {
20+
this.name = name;
21+
}
22+
23+
public Student(int id, String name) {
24+
this.id = id;
25+
this.name = name;
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return "Student{" +
31+
"id=" + id +
32+
", name='" + name + '\'' +
33+
'}';
34+
}
35+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.springframework.boot.autoconfigure.EnableAutoConfiguration=io.nononi.starter.SchoolAutoConfiguration
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.nononi.starter;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.ExtendWith;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.boot.test.context.SpringBootTest;
7+
import org.springframework.test.context.junit.jupiter.SpringExtension;
8+
9+
@ExtendWith(SpringExtension.class)
10+
@SpringBootTest(classes = SchoolAutoConfiguration.class)
11+
public class SchoolTest {
12+
@Autowired
13+
private School school;
14+
15+
@Test
16+
public void test() {
17+
System.out.println(school.toString());
18+
}
19+
}

0 commit comments

Comments
 (0)