powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hello World через Spring, Bean or not Bean, непонятно как работает
7 сообщений из 7, страница 1 из 1
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39484762
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура, Hello World выведен в консоль с помощью Spring.
http://projects.spring.io/spring-framework/
pom.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>GroupId</groupId>
    <artifactId>MessageServiceSpring</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.9.RELEASE</version>
        </dependency>
    </dependencies>
</project>



MessageService.java
Код: java
1.
2.
3.
4.
5.
package hello;

public interface MessageService {
    String getMessage();
}



MessagePrinter.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessagePrinter {

    final private MessageService service;

    @Autowired
    public MessagePrinter(MessageService service) {
        this.service = service;
    }

    public void printMessage() {
        System.out.println(this.service.getMessage());
    }
}




Application.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
package hello;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.*;

@Configuration
@ComponentScan
public class Application {
    // непонятно как работает *** начало
    @Bean
    MessageService mockMessageService() {
        return new MessageService() {
            public String getMessage() {
              return "Hello World!";
            }
        };
    }
    // непонятно как работает *** конец

  public static void main(String[] args) {
      ApplicationContext context = 
          new AnnotationConfigApplicationContext(Application.class);

      MessagePrinter printer = context.getBean(MessagePrinter.class);

      printer.printMessage();
  }
}



Начинаю разбирать как же это все получилось.
Решил подебажить:
попытка 1 - ApplicationContext context = - ушел в дебри по самое... чуть не зае... мучал кнопку F7,
попытка 2 - MessagePrinter printer = - опять попал в дебри.
попытка 3 - printer.printMessage(); - просто не дала понимания.

объясните пожалуйста простыми словами, что, как и в какой момент происходит в методе MessageService mockMessageService() ? и о чем спрингу говорит аннотация @Bean?
...
Рейтинг: 0 / 0
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39484807
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел инфу http://spring-projects.ru/guides/lessons/lesson-2/, вопрос пока отпал
...
Рейтинг: 0 / 0
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39485538
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для чего вам интерфейс interface MessageService , который нигде не унаследован?
...
Рейтинг: 0 / 0
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39485603
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

в спринге насколько я помню, есть определенный нюанс в инициализации бина от класса или от интерфейса. не помню точно что но помню что иногда ругается. )) хотя да, скрытый смысл втыкать везде интерфейсы, когда они имплементят один единственный класс на приложение для меня остается загадкой.
...
Рейтинг: 0 / 0
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39485605
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, инициализация=инжекция.
...
Рейтинг: 0 / 0
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39485616
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTв спринге насколько я помню, есть определенный нюанс в инициализации бина от класса или от интерфейса. не помню точно что но помню что иногда ругается. )) хотя да, скрытый смысл втыкать везде интерфейсы, когда они имплементят один единственный класс на приложение для меня остается загадкой.
Определенный нюанс называется JDK Proxy и в актуальных версиях Spring проблемой не является.
...
Рейтинг: 0 / 0
Hello World через Spring, Bean or not Bean, непонятно как работает
    #39485653
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<spring-boot.version>1.5.3.RELEASE</spring-boot.version>

совсем недавно что-то там накрутил, сам не понял что, с бинами и инжектами и получил это самое знакомое сообщение.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hello World через Spring, Bean or not Bean, непонятно как работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]