私はSpring Bootではなく、Spring MVCでもあるプロジェクトを開発しています。私のプロジェクトには、たとえばこのクラスがないのです。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
Spring MVCの構成ファイルには次の3つのクラスがあります。
@Import(WebSocketConfig.class)
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "......")
public class MainConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/Content/**")
.addResourceLocations("/Content/");
registry.addResourceHandler("/Scripts/**")
.addResourceLocations("/Scripts/");
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver
= new InternalResourceViewResolver();
viewResolver.setPrefix("/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
第二:
public class MainInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
public static HashMap<String, String> response_code = new HashMap<String, String>();
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { MainConfiguration.class,
WebSocketConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
Security.addProvider(new BouncyCastleProvider());
servletContext.addListener(new MainContextListener());
System.out.println("MainInitializer.onStartup()");
}}
第三、
public class MainContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Context Initialized");
Security.addProvider(new BouncyCastleProvider());
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("Shutting down!");
}
}
コントローラーとjspファイルがあり、Tomcat Webサーバーで実行するように構成しました。奇妙なのは、このコードのスニペットをpomに追加すると、index.jspがブラウザーに正確に表示されますが、削除すると、それは私のコントローラーに404 not found urlを与えます。なぜ私のプロジェクトがスプリングブートプロジェクトではないのに、スプリングブートスターターの親が必要なのですか?以下のコードは春のブートに関連していると思いました。私のプロジェクトは春のブートではなく、春のmvcなので、必要ありません。しかし、pomにこのコードを追加しないと問題があります。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
一般的な構成のための場所を提供します for CHILD POM
s。例えば.
Dependencies
&Properties
e.g.
の場合親POM構成1.4.2.RELEASE
spring-boot-dependencies
はspring-boot-starter-parent
の親です
<properties>
<activemq.version>5.13.4</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
<appengine.version>1.9.44</appengine.version>
<artemis.version>1.3.0</artemis.version>
<aspectj.version>1.8.9</aspectj.version>
<assertj.version>2.5.0</assertj.version>
<atomikos.version>3.9.3</atomikos.version>
<bitronix.version>2.1.4</bitronix.version>
<caffeine.version>2.3.4</caffeine.version>
child POM
sの共通プロパティ
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<type>test-jar</type>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
子供の共通の依存関係
Spring Bootは、jarをクラスパスに追加できるようにするいくつかの「スターター」を提供します。例のために。 spring-boot-starter-security、spring-boot-starter-webなど。「spring-boot-starter-parent」は、便利なMavenデフォルトを提供する特別なスターターです。つまり、必要なすべてのjarおよびその他のものを自動的に追加します。また、pom.xmlで使用している依存関係のバージョンタグを省略できるように、依存関係管理セクションも提供します。例のために。 Spring BootでWebアプリケーションを作成したいので、以下を追加する必要があるとします。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
ここで、タグが省略されていることに注意してください。つまり、最終的に「spring-boot-starter-parent」はデフォルトで非常に多くのことを追加するので、それらについて心配する必要はありません。
Pomの統合性など、より多くの情報を提供できる場合は、さらに理解を深め、支援することができます。
一方、親pom spring-boot-starter-parentには、プロジェクトやサブモジュールで使用される依存関係のバージョンを良好な一貫性で維持するための完全な依存関係(mvc、キャッシュ、jpa)およびcommonsプロパティが含まれています。
基本的に、必要に応じてpom.xmlにスターターをいくつか追加できます(web、jpa、batch ...)。たとえば、他の依存関係を追加せずにpom.xmlにスターターmvcを追加するだけでよいので、 pom.xmlは次のようにすることができます。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<properties>
<Java.version>1.8</Java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>