()インターネットの巨大なセット-SpringブートJavaのインタビューの質問面接の質問

春ブーツは、それを実行するために別の容器を必要としますか?

必要ではないかもしれないが、それはコンテナのようにTomcat /桟橋を建設しました。pom.xml依存性を導入することにより:

< -春-ブートstarter-ウェブは:! このモジュールのJARパッケージの数を含む、Webモジュールを表します。 - > 
< -サーバー、ジャクソン、これらのWebプロジェクトTOMCAT建て春関連のjarファイルは、あります!共通の特徴は、自動的に組み込まれている- > 
<依存> 
    <groupIdを> org.springframework.boot </ groupIdを> 
    <たartifactId>スターター・春ブーツ・ウェブ</たartifactId> 
</依存関係>

 

コアコメント春ブーツはどれですか?これは、主成分複数の音符で構成されて?

注釈上記スタートクラスがあり@SpringBootApplication、それはまた、コア春の注釈ブーツで、主にノートの以下の3つの組み合わせが含まれています。

@SpringBootConfiguration

@EnableAutoConfiguration:Open関数が自動的に設定され、オプションも、このようなデータソースの近くに自動設定機能として、自動設定をオフにすることができます@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })

@ComponentScan:春コンポーネントスキャン。

 

春ブーツで意味スターターを理解するには?

何先発こと?

前菜は、依存関係に統合することができる一連のアプリケーションが含まれているスターター、として理解することができ、あなたはそのサンプル・コードとの依存関係を見つける必要がなく、春と他のワンストップの技術を統合することができます。あなたがデータベースにアクセスするために春JPAを使用したい場合は、単に追加spring-boot-starter-data-jpaスターターを使用する準備が異なります。前菜は、多くのプロジェクトの依存関係を使用する必要がありますが含まれ、彼らは速く走るために続けることができ、管理推移の依存関係のシリーズでサポートされています。

 

Starters命名?

春ブーツが公式スターターに基づいているspring-boot-starter-という名前は、アプリケーションの特定のタイプを表します。春ブート名で起動しないランチャーサードパーティが、彼らは公式の春ブーツが予約されています。平均して、第三者がそうMyBatisのように、名前を付ける必要がありますmybatis-spring-boot-starter

 

先発カテゴリー:

1)開始春の起動によって提供さ

イニシエータ名 機能説明
春ブートスターター コアモジュールは、YAMLコンフィギュレーションファイルの自動設定サポート、ログデータベースとサポートを含みます。
春・ブート・スタータAMQP 春ウサギを経由してサポートAMQPプロトコル(アドバンスト・メッセージキュープロトコル)
春・ブート・スタータAOP すなわち、スプリングAOPとAspectJのを備え、サポートAOPを指向プログラミング
春・ブート・スタータアルテミス ApacheのアルテミスAPIを介してJMSサポート(Java Message ServiceのAPI)
春・ブート・スターターバッチ HSQLDBデータベースを含む春のバッチを、サポートしています
春・ブート・スターター・キャッシュ キャッシュ抽象のためのSpringのサポート
春・ブート・スターター・クラウド型コネクタ クラウドファウンドリーまたはHerokuのクラウドプラットフォームの接続サービスなどに簡素化支援春クラウドコネクタ、
春・ブート・スターター・データelasticsearch 含むサポートElasticSearch検索および分析エンジン、バネのデータelasticsearch
春・ブート・スターター・データGemFireの GemFireのは、ばねデータGemFireのを含む、分散ファイルシステムをサポート
春・ブート・スターター・データ-JPA 支持JPA(Javaの永続性API)、包括ばねデータJPA、バネORMは、Hibernate
春・ブート・スターター・データのSolr 春・データのSolrなどのサポートはApache Solr検索プラットフォーム、
春・ブート・スターター・データのMongoDB 春・データのMongoDBなど、MongoDBのサポートデータ、
春・ブート・スターター・データレスト ばねデータ静止webmvcにより、データウェアハウスでサポートされている春データRESTを露出しました
春・ブート・スタータのRedis 春-Redisのを含め、キーバリューストアデータベースのサポートのRedis
春・ブート・スターター・データ-JDBC JDBCデータベースへのアクセスをサポート
春・ブート・スターター・JTA-atomikos AtomikosサポートJTA分散トランザクション処理により、
春・ブート・スターター・JTA-bitronix BitronixサポートJTA分散トランザクション処理により、
春・ブート・スターター・セキュリティ 支持ばねセキュリティ
春・ブート・スターターテスト 従来のテストはJUnitの、Hamcrest、Mockitoとばね試験モジュールを含む、サポートを頼ります
春・ブート・スタータ速度 Velocityテンプレートエンジンのサポート
春・ブート・スタータFreeMarkerの サポートFreeMarkerのテンプレートエンジン
春・ブート・スタータthymeleaf 春との統合を含むサポートThymeleafのテンプレートエンジン、
春・ブート・スタータ口ひげ サポート口ひげテンプレートエンジン
春・ブート・スターター・ウェブ Tomcatと春-webmvcを含め、フルスタックのWeb開発をサポートしています
春・ブート・スタータのWebSocket WebSocketをサポート開発
春・ブート・スターター-WS Spring Webサービスのサポート
春・ブート・スターター・グルーヴィー・テンプレート Groovyのテンプレートエンジンのサポート
春・ブート・スタータHATEOAS 春-HATEOASを経由してRESTfulなWebサービスのサポートのHATEOAS
春・ブート・スタータHornetQは HornetQはJMSサポートにより、
春・ブート・スタータのlog4j サポートlog4jロギングフレームワーク
春・ブート・スタータのロギング 発表春ブーツデフォルトのロギングフレームワークLogback
春・ブート・スターター統合 これは、一般的な春-統合モジュールをサポートしています
春・ブート・スタータジャージー サポートサービスフレームワークジャージーRESTfulなWeb
春・ブート・スターターメール サポートのjavax.mailモジュール
春・ブート・スターター・モバイル 支持ばねモバイル
春・ブート・スターター・社会のFacebook 支持バネの社会のFacebook
春・ブート・スターター・社会のLinkedIn 支持ばね-社会のLinkedIn
春・ブート・スターター・社会さえずり 支持ばね-社会さえずり
ばねブートスタータアクチュエータ このような測定及びモニタリングなどの関連機能を増加させるための製品ライン
春・ブート・スターター・リモートシェル リモートのSSHシェルのサポートが追加されました。
spring-boot-starter-tomcat 引入了 Spring Boot 默认的 HTTP 引擎 Tomcat
spring-boot-starter-jetty 引入了Jetty HTTP引擎(用于替换Tomcat)
spring-boot-starter-undertow 引入了Undertow HTTP引擎(用于替换Tomcat)

4)其他第三方启动器(略)

 

Spring Boot实现热部署有哪几种方式?

在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。

1)引用devtools依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

修改一个java类时就可以实现热更新了。

 

2)自定义配置热部署

以下配置用于自定义配置热部署,可以不设置。

#热部署开关,false即不启用热部署

spring.devtools.restart,enabled: true

#指定热部署的目录

#spring.devtools.restart.additional-paths: src/main/java

#指定目录不更新

spring.devtools.restart.exclude: test/**

 

3)Intellij Idea工具修改实现热部署

需要改以下两个位置:

勾上自动编译或者手动重新编译

File > Settings > Compiler-Build Project automatically

 

注册使用快捷键的方式:

ctrl + shift + alt + / > Registry > 勾选Compiler autoMake allow when app running

 

注意事项:

1)生产环境devtools将被禁用,如java -jar方式或者自定义的类加载器等都会识别为生产环境。

2)打包应用默认不会包含devtools,除非你禁用SpringBoot Maven插件的excludeDevtools属性。

3)Thymeleaf无需配置 spring.thymeleaf.cache:false,devtools默认会自动设置,参考完整属性。

 

下面是devtools自动配置的完整源码:

@Order(Ordered.LOWEST_PRECEDENCE)
public class DevToolsPropertyDefaultsPostProcessor implements EnvironmentPostProcessor {
    private static final Map<String, Object> PROPERTIES;
    static {
        Map<String, Object> devToolsProperties = new HashMap<>();
        devToolsProperties.put("spring.thymeleaf.cache", "false");
        devToolsProperties.put("spring.freemarker.cache", "false");
        devToolsProperties.put("spring.groovy.template.cache", "false");
        devToolsProperties.put("spring.mustache.cache", "false");
        devToolsProperties.put("server.servlet.session.persistent", "true");
        devToolsProperties.put("spring.h2.console.enabled", "true");
        devToolsProperties.put("spring.resources.cache.period", "0");
        devToolsProperties.put("spring.resources.chain.cache", "false");
        devToolsProperties.put("spring.template.provider.cache", "false");
        devToolsProperties.put("spring.mvc.log-resolved-exception", "true");
        devToolsProperties.put("server.servlet.jsp.init-parameters.development", "true");
        devToolsProperties.put("spring.reactor.stacktrace-mode.enabled", "true");
        PROPERTIES = Collections.unmodifiableMap(devToolsProperties);
    }
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment,
            SpringApplication application) {
        if (isLocalApplication(environment) && canAddProperties(environment)) {
            PropertySource<?> propertySource = new MapPropertySource("refresh",
                    PROPERTIES);
            environment.getPropertySources().addLast(propertySource);
        }
    }
    private boolean isLocalApplication(ConfigurableEnvironment environment) {
        return environment.getPropertySources().get("remoteUrl") == null;
    }
    private boolean canAddProperties(Environment environment) {
        return isRestarterInitialized() || isRemoteRestartEnabled(environment);
    }
    private boolean isRestarterInitialized() {
        try {
            Restarter restarter = Restarter.getInstance();
            return (restarter != null && restarter.getInitialUrls() != null);
        }
        catch (Exception ex) {
            return false;
        }
    }
    private boolean isRemoteRestartEnabled(Environment environment) {
        return environment.containsProperty("spring.devtools.remote.secret");
    }
}

4)devtools会在windows资源管理器占用java进程,在开发工具里面杀不掉,只能手动kill掉,不然重启会选成端口重复绑定报错。

 

Spring Boot如何定义多套不同环境配置?

简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。

假如有开发、测试、生产三个不同的环境,需要定义三个不同环境下的配置。

1)基于properties文件类型可以另外建立3个环境下的配置文件:

applcation.properties
application-dev.properties
application-test.properties
application-prod.properties

然后在applcation.properties文件中指定当前的环境spring.profiles.active=test,这时候读取的就是application-test.properties文件。

 

2)基于yml文件类型,只需要一个applcation.yml文件即可,推荐此方式。关注微信公众号“Java精选”(w_z90110),回复关键字领取资料:如MysqlHadoopDubboCAS源码等等,免费领取视频教程、资料文档和项目源码。Java面试题持续更新中...

spring:
  profiles: 
    active: prod
---
spring: 
  profiles: dev  
server: 
  port: 8080
  
---
spring: 
  profiles: test  
server: 
  port: 8081
---
spring.profiles: prod
spring.profiles.include:
  - proddb
  - prodmq
server: 
  port: 8082
  
---
spring: 
  profiles: proddb  
db:
name: mysql
   
---
spring: 
  profiles: prodmq   
mq: 
  address: localhost

其中dev代表开发,test代表测试,prod代表正式环境。此时读取的就是prod的配置,prod包含proddb,prodmq,此时可以读取proddb,prodmq下的配置。也可以同时激活三个配置,如下:

spring.profiles.active: prod,proddb,prodmq

  

3)基于Java代码,在JAVA配置代码中也可以加不同Profile下定义不同的配置文件,@Profile注解只能组合使用@Configuration@Component注解。

@Configuration
@Profile("prod")
public class ProductionConfiguration {
// ...
}

  

4)指定Profile

main方法启动方式:在Eclipse Arguments里面添加

--spring.profiles.active=prod

插件启动方式:

spring-boot:run -Drun.profiles=prod

jar运行方式:

java -jar xx.jar --spring.profiles.active=prod

 

除了在配置文件和命令行中指定Profile,还可以在启动类中写死指定,通过SpringApplication.setAdditionalProfiles方法

SpringApplication.class
public void setAdditionalProfiles(String... profiles) {   
    this.additionalProfiles = new LinkedHashSet<String>(Arrays.asList(profiles));
}

 

转载自:互联网大厂Java面试题集—Spring boot面试题(一)

おすすめ

転載: www.cnblogs.com/MrYoodb/p/11994734.html