Вообще говоря класс выше springBoot первого запуска будет добавлять комментарии SpringBootApplication, но мы нашли без аннотаций можно успешно работать, следующий пример:
pom.xml
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<XML версия = "1,0" кодирующая = "UTF-8"?> <проект Xmlns = "http://maven.apache.org/POM/4.0.0" Xmlns: XSI = "HTTP: //www.w3 .org / 2001 / XMLSchema-экземпляр» 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> <идентификатор_группы> com.edu.spring </ идентификатор_группы> <артефакт> springboot </ артефакт> <версия> 1.0.0 </ версия> <упаковка> баночка </ упаковка> <имя > springboot </ имя> <- изменение FIXME его на сайт проекта ->! <URL> Http: // www.example.com </ url> <dependencyManagement> <зависимостей> <зависимость> <идентификатор_группы> org.springframework.boot </ идентификатор_группы> <артефакта> весенне-загрузка зависимости </ артефакт> <версия> 2.1.6.RELEASE </ версия> <сфера> импорт </ сфера> <типа> POM </ тип> </ зависимость> </ зависимостей> </ dependencyManagement> <свойства> <project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding> <maven.compiler.source> 1.8 </maven.compiler.source > <maven.compiler.target> 1,8 </maven.compiler.target> </ свойства> <зависимостей> <зависимость> <идентификатор_группы> org.springframework.boot </ идентификатор_группы> <артефакт> весна-загрузка-стартер </ артефакт> </ зависимость> </ зависимостей> </ проект>
App.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
пакет com.edu.spring.springboot; импорт org.springframework.boot.SpringApplication; импорт org.springframework.context.ConfigurableApplicationContext; импорт org.springframework.context.annotation.Bean; общественный класс App { @Bean Runnable createRunnable () { возвращение () -> {System.out.println ( "ботинки весны запускаются" );}; } Общественных статическая недействительный основной (String [] арг) { ConfigurableApplicationContext контекст = SpringApplication.run (App. Класс , аргументы); context.getBean (Runnable.класс ) .run (); } }
Результаты таковы:
Можно увидеть, springboot нормальной работы, и компонент может быть создан, так как метод запуска, в конечном счете вызвать конструктор класса SpringApplication SpringApplication, которые проходят в качестве параметра (типа прохода) будет использоваться в качестве источника, управления пружиной контейнера, часть исходного кода следующим образом:
Так почему же мы до сих пор обычно добавляют SpringBootApplication прокомментируете? Это потому, что ноты содержат ComponentScan заметки и другие аннотации, ComponentScan аннотаций могут быть выполнены с возможностью сканирования весной пути. Так App.java не может работать должным образом аннотированный, и создать компонент, но не сканирование другого бина, тесты следующим образом:
Добавить User.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
пакет com.edu.spring.springboot; импорт org.springframework.stereotype.Component; @Component общественного класса пользователь { }
App.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
пакет com.edu.spring.springboot; импорт org.springframework.boot.SpringApplication; импорт org.springframework.context.ConfigurableApplicationContext; импорт org.springframework.context.annotation.Bean; общественный класс App { @Bean Runnable createRunnable () { возвращение () -> {System.out.println ( "ботинки весны запускаются" );}; } Общественных статическая недействительный основной (String [] арг) { ConfigurableApplicationContext контекст = SpringApplication.run (App. Класс , аргументы); context.getBean (Runnable.класс ) .run (); System.out.println (context.getBean (User. Класс )); } }
Результаты таковы:
ComponentScan добавлять аннотации App.java выше, могут быть отсканированы к классу пользователя
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
пакет com.edu.spring.springboot; импорт org.springframework.boot.SpringApplication; импорт org.springframework.context.ConfigurableApplicationContext; импорт org.springframework.context.annotation.Bean; импорт org.springframework.context.annotation.ComponentScan; @ComponentScan общественного класса App { @Bean Runnable createRunnable () { возвращение () -> {System.out.println ( "ботинки весны запускаются" );}; } Общественных статическая недействительный основной (String [] арг) { ConfigurableApplicationContext контекст= SpringApplication.run (App. Класс , арг); context.getBean (Runnable. класс ) .run (); System.out.println (context.getBean (User. Класс )); } }
Результаты не будут работать ошибки следующим образом:
SpringApplication.run (App.class, арг); параметр приложения в качестве источника, инициализируется пружинные контейнеры, этот параметр не обязательно является способ, в котором работает сам класс может быть другой тип, например:
App.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
пакет com.edu.spring.springboot; импорт org.springframework.boot.SpringApplication; импорт org.springframework.context.ConfigurableApplicationContext; общественный класс App { общественных статический недействительный основной (String [] арг) { ConfigurableApplicationContext контекст = SpringApplication.run (App2. класс , арг); context.getBean (Runnable. класс ) .run (); System.out.println (context.getBean (User. Класс )); } }
App2.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
пакет com.edu.spring.springboot; импорт org.springframework.context.annotation.Bean; импорт org.springframework.context.annotation.ComponentScan; @ComponentScan общественного класс App2 { @Bean Runnable createRunnable () { возвращение () -> {System.out.println ( "ботинки весны запускаются" );}; } }
Пользователь может также получить Runnable и результаты боба являются следующим:
Если в это время метод создаст Runnable написано в App.java не получит боб, ошибку программы. Как было указано источник App2.java. ComponentScan с пакетом сканирования, или суб-пакет, источник так, чтобы поместить самый наружный пакет. источник SpringBootApplication можно добавлять аннотации или ComponentScan.