Будучи первым блогом из вводной серии Spring, этот блог не будет объяснять, что такое Spring, и историю разработки Spring, которые носят слишком теоретический характер. В основном он объясняет, как использовать IntelliJ IDEA для создания проекта Spring и понимает простое использование Spring. на примере. .
1. Создайте проект Spring
Сначала откройте всплывающее окно «Новый проект», как показано на рисунке ниже:
Затем выберите тип проекта Spring слева:
Если вы забыли выбрать здесь «Создать пустой spring-config.xml», вы также можете создать новый проект, а затем создать новый файл конфигурации.
Далее определяем имя проекта и путь сохранения, после чего нажимаем кнопку «Готово»:
Поскольку пакеты, от которых зависит Spring, должны быть загружены, их нужно загрузить некоторое время.
Схема новой структуры проекта выглядит следующим образом:
2. Весенний пример
Создайте новый класс Book, определите два поля bookName, author и метод экземпляра printBookInfo().
public class Book {
private String bookName;
private String author;
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public void printBookInfo() {
System.out.println("Book Name:" + this.bookName + ",Author:" + this.author);
}
}
Если мы хотим вывести информацию о книге традиционным способом, нам потребуются следующие шаги:
- Создайте экземпляр объекта класса Book.
- Установите поле bookName и поле автора объекта экземпляра
- Вызвать метод printBookInfo() экземпляра объекта
public class Main {
public static void main(String[] args) {
Book book = new Book();
book.setBookName("平凡的世界");
book.setAuthor("路遥");
book.printBookInfo();
}
}
результат операции:
Название книги: Обычный мир, Автор: Лу Яо
Итак, как реализовать тот же вызов в проекте Spring?
Сначала измените spring-config.xml и добавьте следующую конфигурацию:
<bean id="book" class="Book">
<property name="bookName" value="平凡的世界"/>
<property name="author" value="路遥"/>
</bean>
Затем измените метод Main на:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
Book book = applicationContext.getBean("book", Book.class);
book.printBookInfo();
}
}
результат операции:
Мы обнаружим, что текущий результат такой же, как и при традиционном методе, но с дополнительной информацией журнала Spring.
В приведенном выше коде мы не использовали оператор new для создания экземпляра класса Book, но мы можем получить экземпляр класса Book. В этом сила Spring. Создание всех экземпляров класса не требует приложения создать его самостоятельно. , но в контейнер Spring для создания и управления.
3. Объяснение примера Spring
Хотя создание экземпляра передается контейнеру Spring для создания и управления, в приведенном выше коде когда был создан экземпляр класса Book и назначено поле?
Чтобы проверить этот вопрос, давайте изменим класс Book.
public class Book {
private String bookName;
private String author;
public Book(){
System.out.println("This is Book constructor.");
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
System.out.println("This is Book setBookName().");
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
System.out.println("This is Book setAuthor().");
this.author = author;
}
public void printBookInfo() {
System.out.println("Book Name:" + this.bookName + ",Author:" + this.author);
}
}
Добавьте еще один класс Author:
public class Author {
private String name;
private int age;
public Author() {
System.out.println("This is Author constructor.");
}
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("This is Author setName().");
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
System.out.println("This is Author setAge().");
this.age = age;
}
public void printAuthorInfo() {
System.out.println("Name:" + this.name + ",Age:" + this.age);
}
}
Затем измените файл spring-config.xml.
<bean id="book" class="Book">
<property name="bookName" value="平凡的世界"/>
<property name="author" value="路遥"/>
</bean>
<bean id="author" class="Author">
<property name="name" value="路遥"/>
<property name="age" value="60"/>
</bean>
Наконец, мы модифицируем код класса Main для отладки и просмотра порядка выполнения кода.
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
Book book = applicationContext.getBean("book", Book.class);
book.printBookInfo();
Author author = applicationContext.getBean("author", Author.class);
author.printAuthorInfo();
}
}
Для более интуитивного отображения см. следующий Gif.
Из рисунка видно, что после выполненияApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
После этого консоль выводит следующее:
This is Book constructor.
This is Book setBookName().
This is Book setAuthor().
This is Author constructor.
This is Author setName().
This is Author setAge().
То есть после выполнения этого кода созданы экземпляры класса Book и класса Author и назначены поля, следующий код как раз для получения экземпляра из контейнера Spring.
4. Меры предосторожности
При получении бина первый параметр beanName должен совпадать с идентификатором бина, определенным в spring-config.xml.Например, мы определяем book в spring-config.xml.Если книга будет написана при получении, будет сообщено об ошибке .
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 错误的beanName
Book book = applicationContext.getBean("Book", Book.class);
book.printBookInfo();
}
}
Сообщение об ошибке выглядит следующим образом:
5. Исходный код и ссылка
Адрес источника:GitHub.com/Где находится Ухань/SPR…, добро пожаловать на скачивание.
[Весна] IntelliJ IDEA создает среду Spring
Создание проекта Spring и реализация небольшого кейса IoC в идее