2016-04-08 30 views
1

Spring Boot uygulama sınıflarının diğer sınıfları genişletebileceğini, ancak main(String[] args) yöntemlerinin genel olarak SpringApplication.run(Application.class, args) kullanıldığını fark ettim. Örnekler genellikle Application sınıf tanımının üstünde farklı ek açıklamalar kullanır.Spring Boot Uygulama sınıfları ne kadar uzanabilir?

1.) Bir Bahar Boot Application.java sınıfı uzatabilirsiniz olası sınıfları nelerdir:

Bu OP üç yakından ilişkili soruların basit bir özeti için sorar?

2.) Her bir uzantı seçeneğinin kullanım amacı nedir?

3.) Belirli bir uzantı seçimi, sınıf tanımına eklenecek belirli ek açıklamaları da belirler mi? Benim araştırma

, şu üç uzantı seçenekleri belirledik:

1.), hiç bir şey uzatın Bu örnekte göre:

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
public class Application { 

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

} 

2.) Bu uyarınca, WebMvcConfigurerAdapter uzatın örnek:

@SpringBootApplication 
@Controller 
public class UiApplication extends WebMvcConfigurerAdapter { 

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

3.), bu örnekte göre, SpringBootServletInitializer uzatın:

@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); 
    } 
} 

Ek açıklamaları ve örneklerden en az diğer şeyleri sakladığımı unutmayın. Bu OP, eğer özel bir açıklama seçimleri veya en az diğer şeylerin, uzatma seçimi ile dikte edilmesi durumunda sorar. Bu takdirde

@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()); 
} 
} 

emin değil:

+3

Tüm bu sınıfların javadoc'unu okudunuz mu? Çünkü onlar muhtemelen sorularınızı cevaplıyorlar. –

cevap

1

miras değil diğeri, ancak, kompozisyon var bazı işlemleri gerçekleştirmek, böylece Bahar Boot uygulaması başlatıldığında şöyle zaman CommandLineRunner arabirimini uygulamaktır ama aradığın şey.

İlgili konular