メインアプリケーションを使用してアプリケーションを実行すると、consoleUnableでWebサーバーを起動できませんでした。ネストされた例外はorg.springframework.context.ApplicationContextExceptionです:ServletWebServerFactory Beanがないため、ServletWebServerApplicationContextを起動できません。
主な用途
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
サーブレット初期化子
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
build.gradle
buildscript {
ext {
springBootVersion = '2.0.0.M4'
}
repositories {
jcenter()
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id "org.sonarqube" version "2.5"
}
apply plugin: 'Java'
apply plugin: 'idea'
apply plugin: 'Eclipse-wtp'
apply plugin: 'jacoco'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'
group = 'com.demo'
version = '0.0.1-SNAPSHOT'
// Uses JDK 8
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
maven { url "https://repo.spring.io/milestone" }
jcenter()
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
}
configurations {
providedRuntime
}
dependencies {
// SPRING FRAMEWORK
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-aop')
compile('org.springframework.boot:spring-boot-starter-actuator')
// Tomcat Server
providedRuntime('org.springframework.boot:spring-boot-starter-Tomcat')
//Spring Jpa
compile('org.springframework.boot:spring-boot-starter-data-jpa')
// SPRING SECURITY
compile('org.springframework.boot:spring-boot-starter-security')
// MYSQL and HIBERNATE
compile 'mysql:mysql-connector-Java:5.1.34'
//compile 'org.hibernate:hibernate-core:5.2.11.Final'
//compile 'org.hibernate:hibernate-validator:5.1.3.Final'
}
助けて
この回答 、 Andres Cespedes Morales のおかげで、これが役立つかもしれません:
このメッセージは:ApplicationContextで少なくとも1つのServletWebServerFactory beanを設定する必要があるため、spring-boot-starter-Tomcatが既にある場合はそのBeanを自動設定するか、または行う必要があります手動で。
そのため、テストではapplicationContextをロードする構成クラスは2つのみで、これらは= {WebsocketSourceConfiguration.class、WebSocketSourceIntegrationTests.class}であり、少なくともこれらのクラスの1つには、目的のインスタンスを返す@Beanメソッドが必要です。 ServletWebServerFactory。
構成クラス内のすべてのBeanを必ずロードしてください
WebsocketSourceConfiguration {
@Bean
ServletWebServerFactory servletWebServerFactory(){
return new TomcatServletWebServerFactory();
}
}
または、AutoConfigurationがそれらのBeanのクラスパススキャンおよび自動設定を実行できるようにします。
@EnableAutoConfiguration
WebsocketSourceConfiguration
Integration Testクラスでも実行できます。
@EnableAutoConfiguration
WebSocketSourceIntegrationTests
詳細については、SpringBootTestアノテーション documentation https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/context/SpringBootTestを確認してください。 .html
私は多くのjspファイルがそのアプリケーションとデータベース接続を実行するためにデータを必要とすることで春ブートアプリケーションを作成しました書かれたJava class:
UserAuthenticationFilter
は、my Java mongoDBデータベースに接続し、userIdとパスワードを取得するクラスです。
AppLoginSuccessHandler
は、ログインしているユーザーを処理するクラスです。
AppLogoutSuccessHandler
は、ログアウトするユーザーを処理するクラスです。
configure()
許可とユーザーを指定しました。
public class SpringSecurityWebAppConfig extends WebSecurityConfigurerAdapter
{
@Autowired
UserAuthenticationFilter userAuthenticationFilter;
//this is my Java class to get userId and pass for login site
@Autowired
AppLoginSuccessHandler appLoginSuccessHandler;
//this is my Java class handler when user login site
@Autowired
AppLogoutSuccessHandler appLogoutSuccessHandler;
//this is my Java class handler when user log out site
@Bean
public UserAuthenticationFilter UserDetailsService(){
return new UserAuthenticationFilter();
}
protected void configure(HttpSecurity http){
try {
http.authorizeRequests()
.antMatchers("/bootstrap/*").permitAll()
.antMatchers("/fonts/*").permitAll()
.antMatchers("/images/*").permitAll()
.antMatchers("/css/*").permitAll()
.antMatchers("/js/*").permitAll()
.antMatchers("/index.jsp").permitAll()
.antMatchers("/accessdenied").permitAll()
.antMatchers("/WEB-INF/view/*").permitAll()
.antMatchers("/**").access("hasAnyRole('XXX','XXX','XXX',"
+ "'XXX','XXX')").
anyRequest().authenticated()
.and() .formLogin().loginPage("/index.jsp").defaultSuccessUrl("/view/dashboardView", true).successHandler(appLoginSuccessHandler)
.failureUrl("/index.jsp?error=true")
.and()
.logout().logoutUrl("/j_spring_security_logout").logoutSuccessHandler(appLogoutSuccessHandler)
.and()
.exceptionHandling();
} catch (Exception e) {
e.printStackTrace();
}
}
}
MvcConfiguration
:次のコードを記述しました。次のコードはDispatcherServlet
のように機能することに留意して、もう1つのクラスを記述しました。
@SuppressWarnings("deprecation")
@Configuration
@EnableWebMvc
@ComponentScan
public class MvcConfiguration extends WebMvcConfigurerAdapter{
public void configureViewResolver(ViewResolverRegistry registry){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setViewClass(getClass());
resolver.setViewNames("org.springframework.web.servlet.view.JstlView");
resolver.setPrefix("/WEB-INF/view/");
resolver.setSuffix(".jsp");
}
}
Application1
はスプリングブートのメインクラスです。このクラスを実行するとエラーが発生します。
org.springframework.context.ApplicationContextException:ServletWebServerFactory Beanがないため、ServletWebServerApplicationContextを起動できません。
@SpringBootApplication
@ComponentScan("XXX.XXX.XXX.SpringSecurityWebAppConfig")
public class Application1 extends SpringBootServletInitializer{
protected SpringApplicationBuilder configurApplicationBuilder(SpringApplicationBuilder application){
return application.sources(Application1.class);
}
public static void main(String[] args) {
//SpringApplication.run(Application1.class, args);
new Application1().configure(new SpringApplicationBuilder(Application1.class)).run(args);
}
}