2016-04-08 23 views
1

私は、Springブートアプリケーションクラスは他のクラスを拡張することができますが、main(String[] args)メソッドは一般的にすべてSpringApplication.run(Application.class, args)を使用することに注意してください。例では、多くの場合、Applicationクラス定義の上に異なる注釈を使用します。Spring Boot Applicationクラスはどのように拡張できますか?

このOP 3つの密接に関連する質問の簡単な要約を要求します:

1)春ブーツApplication.javaクラスを拡張することができる可能なクラスは何ですか?

2.)それぞれの拡張オプションの用途は何ですか?

3)また、指定された拡張子を選択すると、クラス定義に追加する必要がある特定の注釈も指定されますか?

私の研究から、私は、次の3つの拡張オプションが同定されている。)

1.この例のように、全く何も拡張しない:

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 

2)このあたりとして、WebMvcConfigurerAdapterを拡張例:

@SpringBootApplication 
@Controller 
public class UiApplication extends WebMvcConfigurerAdapter { 

    public static void main(String[] args) { 
     SpringApplication.run(UiApplication.class, args); 
    } 
} 

3)は、この例に従って、SpringBootServletInitializerを拡張:

@Configuration 
@EnableAutoConfiguration 
@EnableScheduling 
@ComponentScan 
public class Application extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Application.class); 
    } 

    public static void main(String... args) { 
     System.setProperty("spring.profiles.default", System.getProperty("spring.profiles.default", "dev")); 
     final ApplicationContext applicationContext = SpringApplication.run(Application.class, args); 
    } 
} 

例から注釈と最小限のものを残しています。このOPは、特定の注釈の選択肢または最小限の他のものが拡張の選択によって指示されるかどうかを単に尋ねます。

+3

これらのクラスのjavadocは読んでいますか?おそらくあなたの質問に答えてくれるからです。 –

答えて

1

継承はありませんが、それは、組成物のもう一つは、春のブートアプリケーションがそうのように、起動時にあなたには、いくつかの操作を実行できるようにCommandLineRunnerインターフェイスを実装することである。この場合

@SpringBootApplication 
public class DevopsbuddyApplication implements CommandLineRunner { 

/** The application logger */ 
private static final Logger LOG = LoggerFactory.getLogger(DevopsbuddyApplication.class); 

@Autowired 
private UserService userService; 

@Value("${webmaster.username}") 
private String webmasterUsername; 

@Value("${webmaster.password}") 
private String webmasterPassword; 

@Value("${webmaster.email}") 
private String webmasterEmail; 

public static void main(String[] args) { 
    SpringApplication.run(DevopsbuddyApplication.class, args); 
} 

@Override 
public void run(String... args) throws Exception { 

    User user = UserUtils.createBasicUser(webmasterUsername, webmasterEmail); 
    user.setPassword(webmasterPassword); 
    Set<UserRole> userRoles = new HashSet<>(); 
    userRoles.add(new UserRole(user, new Role(RolesEnum.ADMIN))); 
    LOG.debug("Creating user with username {}", user.getUsername()); 
    userService.createUser(user, PlansEnum.PRO, userRoles); 
    LOG.info("User {} created", user.getUsername()); 
} 
} 

わかりませんあなたが探しているものです。

関連する問題