I have two Spring Boot application one is normal application which include another application as dependency. And in 2nd application I have written Jira security which needs to be added on 1st application.
Both separately working fine but the when I am adding 2nd app in 1st app it is showing below error:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.atlassian.connect.spring.internal.request.oauth2.OAuth2JwtClientRegistrationRepository required a bean named 'entityManagerFactory' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
- @org.springframework.beans.factory.annotation.Qualifier("oauth2-jwt-impersonation")
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
In my security application I have following classes:
@Component
public class JiraUtility {
public AtlassianHostRestClients getAtlassianHostRestClients() {
return (AtlassianHostRestClients) GetBean.context.getBean("atlassianHostRestClientsImpl");
}
}
To get created bean we use application context aware:
@Component
public class GetBean implements ApplicationContextAware {
public static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
}
And oauth 2 implementation is as below:
@Component("oAuth2ClientRequestFilter")
public class OAuth2ClientRequestFilter implements ClientRequestFilter {
@Autowired
private AtlassianHostRestClients atlassianHostRestClients;
@Autowired
private AtlassianHostRepository hostRepository;
private String userAccountId;
@Override
public void filter(ClientRequestContext requestContext) {
AtlassianHostUser hostUser = AtlassianHostUser.builder(getHost(requestContext))
.withUserAccountId(userAccountId)
.build();
String token = atlassianHostRestClients.getAccessToken(hostUser).getTokenValue();
requestContext.getHeaders().add("Authorization", String.format("Bearer %s", token));
}
public String getUserAccountId() {
return userAccountId;
}
public void setUserAccountId(String userAccountId) {
this.userAccountId = userAccountId;
}
private AtlassianHost getHost(ClientRequestContext requestContext) {
URI requestUri = requestContext.getUri();
String baseUrl = String.format("%s://%s", requestUri.getScheme(), requestUri.getHost());
return hostRepository.findFirstByBaseUrlOrderByLastModifiedDateDesc(baseUrl).get();
}
}
And in pom.xml I have added below dependencies:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.atlassian.connect</groupId>
<artifactId>atlassian-connect-spring-boot-starter</artifactId>
<version>${atlassian-connect-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>com.atlassian.connect</groupId>
<artifactId>atlassian-connect-spring-boot-jpa-starter</artifactId>
<version>${atlassian-connect-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.25</version>
</dependency>
</dependencies>
And in Main application I have just Spring boot starter class :
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, FreeMarkerAutoConfiguration.class})
@ComponentScan(basePackages = {"com"})
@EnableAutoConfiguration(exclude = {LiquibaseAutoConfiguration.class})
@ServletComponentScan(basePackages = "com")
public class AivApplication extends SpringBootServletInitializer implements WebMvcConfigurer {
public static void main(String[] args) throws Exception {
new SpringApplication(AivApplication.class).run(args);
}
}
How can I do it using adding security application as dependency in Spring Boot application?