Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Spring Boot проект невидит конфигруцию конекта к базе которая есть в дочернем Spring Boot

Есть несколько Spring Boot приложений, которые предоставляют REST API.

Создал новое Spring Boot в которого в зависимостях maven уже существующие приложения.

В результате при запуске получаю ошибку:


2016-12-06 15:51:51.348 WARN 11620 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.tomcat.jdbc.pool.DataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
2016-12-06 15:51:51.350 INFO 11620 --- [ main] org.ehcache.core.EhcacheManager : Cache 'sessions' removed from EhcacheManager.
2016-12-06 15:51:51.352 INFO 11620 --- [ main] org.ehcache.core.EhcacheManager : Cache 'locality' removed from EhcacheManager.
2016-12-06 15:51:51.352 INFO 11620 --- [ main] org.ehcache.core.EhcacheManager : Cache 'estate_cache' removed from EhcacheManager.
2016-12-06 15:51:51.357 INFO 11620 --- [ main] o.apache.catalina.core.StandardService : Stopping service Tomcat
2016-12-06 15:51:51.395 INFO 11620 --- [ main] utoConfigurationReportLoggingInitializer :

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2016-12-06 15:51:51.400 ERROR 11620 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************
***************************
APPLICATION FAILED TO START

Description:

Cannot determine embedded database driver class for database type NONE

Action:

If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).

Если добавить в мой новый проект bean datasource то ошибки нет. Но мне нужно что считывалась конфигурация из дочернего проекта. Там есть такой клас:


@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "userEntityManagerFactory",
        transactionManagerRef = "userTransactionManager",
        basePackages = {"mypackage.user.db"})
public class UserConfig {

    @Bean(name = "userDataSource")
    @ConfigurationProperties(prefix = "privil")
    public DataSource userDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "userEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean userEntityManagerFactory(
            EntityManagerFactoryBuilder builder,
            @Qualifier("userDataSource") DataSource userDataSource) {
        return builder
                .dataSource(userDataSource)
                .packages("mypackage.user")
                .persistenceUnit("user")
                .build();
    }

    @Bean(name = "userTransactionManager")
    public PlatformTransactionManager userTransactionManager(
            @Qualifier("userEntityManagerFactory") EntityManagerFactory userEntityManagerFactory) {
        return new JpaTransactionManager(userEntityManagerFactory);
    }
}


Насколько я понимаю невидит или некоректно видит этот клас. Почему какие идеи?
Ответ:
Andrephilos
mad_nazgul,

ух... пофиксил

решение

суть: проекте spring boot который планируем использовать как библиотеку нужно вместо стандртного спрингового плагина использовать мавеновский

Спасибо, тем кто пытался помочь


            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>


Попробуй еще так.
Я просто это прописываю "по умолчанию" и забыл, что можно иначе.
Т.к. без данной конфигурации ${artifactId}-${version}.jar - это пускачь для spring-boot
А с этой опцией это просто jar-ка
А пускачь ${artifactId}-${version}-exec.jar
Вопрос: Spring boot exception при старте

Есть spring boot (1.5.6.RELEASE) проект:
@EnableAutoConfiguration
public class MyApplication extends SpringBootServletInitializer {

В него подключается зависимость (назовем А):
dependencies {
    compile "com.test:some-dependencies:1.0.15"

В зависимости А используется зависимость В:
compile group: 'org.springframework.amqp', name: 'spring-rabbit', version: '1.6.3.RELEASE'

Т.е. там присутствует спринг
В итоге при запуске вылетает ошибка:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.test.MyApplication]; nested exception is java.lang.IllegalArgumentException: Cannot instantiate factory class: org.springframework.boot.autoconfigure.AutoConfigurationImportFilter
	at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:468) ~[some-dependencies-1.0.15.jar:na]
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:186) ~[some-dependencies-1.0.15.jar:na]

Он видимо как-то определяет, что в либе которую я подключила есть классы с аннотациями @Configuration и т.д. Как это исправить, помогите пожалуйста. В какую сторону вообще копать?
Ответ: JulT,

Надо всё дерево зависимостей посмотреть. Похоже у вас Spring Boot и ваш модуль тянут разные версии Spring. Вам нужно привести их к одной версии.
Вопрос: Spring Boot и Tomcat

Сгенерировал проект[добавил зависимость Web] с помощью
VetalApplication.java:
+

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class VetalApplication {

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

Добавил \src\main\resources\static\index.html

Теперь запускаю в консоли: mvn spring-boot:run
Открываю браузер по адресу и вижу свой index.html - все работает.

Теперь вопрос: Как мне это приложение запустить на Томкате(например из Eclipse).
Можете сказать какие шаги необходимо проделать, или ссылку.

Вот мои мысли по этому поводу:
Если делать через xml конфигурацию, то необходимо создать папку \src\main\webapp\WEB-INF, и создать файлы web.xml, spring-servlet.xml. Правильно ли я думаю?
Ответ: Получилось задеплоить war (тестовый упрощенный проект) на Томкат.

Вот что добавил в проект:
VetalApplication.java:
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

@SpringBootApplication
public class VetalApplication extends SpringBootServletInitializer{
	
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(VetalApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(VetalApplication.class, args);
    }
}
pom.xml:
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
</dependency>
Вопрос: Конвертация war приложения в Spring boot jar приложение

Доброй ночи. Скажите ни у кого не возникала необходимость превратить приложение, которое упаковывается в war и деплоиться в Tomcat, в элегантный jar с использованием Spring Boot? Это возможно и иногда нужно?
Ответ:
MaxNevermind
May12
mad_nazgul, первая половина дела готова (war'ник). Теперь его надо "заспрингбутить". Вопрос покажется странным: что дает spring boot? Я получу некое приложение которое будет запускаться по клику? Я читаю мануал, но хотелось бы пообщаться на эту тему.


Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible.
Вроде как, дает набор дефолтных настроек по умолчанию. Если у вас типовой проект с небольшими отклонениями от дефота, то проще и описать эти отклонения а не писать всю всю конфигурацию вручную.

Ну и запуск проекта сводиться к
gradle build && java -jar build/libs/project-0.0.1.jar
или
mvn package && java -jar target/project-0.0.1.jar
Вопрос: Spring Boot - cannot be cast to...

Привет всем.
Есть проект, hibernate, spring @transactional.
в потоках рассчитывается информация (в потоках нет транзакций)
после выполнения всех потоков, -записываются данные (в транзакции).
и так по каждому объекту.

всё работает отлично и без сбоев,
но как только вызов на этот метод перенести в
spring boot
@RestController

@RequestMapping("/blabla")
public String blabla(@RequestParam(value="name", defaultValue="00000000") String name) {

...

начинают валится рэндомные ошибки типа
Error in thread: Thread-16 com.ric.bill.model.ps.Reg cannot be cast to com.ric.bill.model.bs.Dw
(ошибки в потоке происходят).
Иногда может быть что за цикл исполнения не будет ошибок, иногда валятся...

что может быть?
Ответ:
kevinlexus
Вот не наследник он. Как раз поэтому удивлён таким ошибкам

stacktrace тогда может обнародовать? А то есть два класса и они не кастятся. А нам нужно угадать почему и должны ли вообще.
Вопрос: Тестирование в Spring Boot. Помогите исправить ошибку.

Доброго времени, пишу свой первый тест на jUnit под Spring Boot проект, но не могу запустить его.

Вот зависимости из pom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>


Вот код теста:
package com.khoma.restful.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.junit4.SpringRunner;

import com.khoma.restful.model.Pobocka;
import com.khoma.restful.repository.PobockaRepository;

import static org.assertj.core.api.Assertions.assertThat;

@RunWith(SpringRunner.class)
@DataJpaTest
public class PobockaRepositoryTest {
 
    @Autowired
    private TestEntityManager entityManager;
 
    @Autowired
    private PobockaRepository pobockaRepository;
 
    @Test
    public void whenFindByName_thenReturnEmployee() {
        // given
        Pobocka pobockaPraha = new Pobocka("Roga i kopyta");
        entityManager.persist(pobockaPraha);
        entityManager.flush();
     
        // when
        Pobocka found = pobockaRepository.findOne(pobockaPraha.getId());
     
        // then
        assertThat(found.getNazev())
          .isEqualTo(pobockaPraha.getNazev());
    }
}


А это стектрейс ошибки:
java.lang.IllegalStateException: Failed to load ApplicationContext
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:47)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:111)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
	... 24 more
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882)
	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353)
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373)
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)
	... 39 more
Caused by: org.hibernate.exception.SQLGrammarException: Error creating DatabaseInformation for schema migration
	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)
	at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:127)
	at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:472)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879)
	... 45 more
Caused by: org.h2.jdbc.JdbcSQLException: Table "PG_CLASS" not found; SQL statement:
select relname from pg_class where relkind='S' [42102-192]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
	at org.h2.message.DbException.get(DbException.java:179)
	at org.h2.message.DbException.get(DbException.java:155)
	at org.h2.command.Parser.readTableOrView(Parser.java:5388)
	at org.h2.command.Parser.readTableFilter(Parser.java:1257)
	at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1896)
	at org.h2.command.Parser.parseSelectSimple(Parser.java:2044)
	at org.h2.command.Parser.parseSelectSub(Parser.java:1890)
	at org.h2.command.Parser.parseSelectUnion(Parser.java:1711)
	at org.h2.command.Parser.parseSelect(Parser.java:1699)
	at org.h2.command.Parser.parsePrepared(Parser.java:445)
	at org.h2.command.Parser.parse(Parser.java:317)
	at org.h2.command.Parser.parse(Parser.java:289)
	at org.h2.command.Parser.prepareCommand(Parser.java:254)
	at org.h2.engine.Session.prepareLocal(Session.java:560)
	at org.h2.engine.Session.prepareCommand(Session.java:501)
	at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1202)
	at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:73)
	at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:42)
	at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.initializeSequences(DatabaseInformationImpl.java:64)
	at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.<init>(DatabaseInformationImpl.java:60)
	at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:123)
	... 49 more
Ответ: Usman,

Огромное спасибо! Наконец-то могу начать писать тесты ))
Вопрос: TransactionManager Spring Boot

Насколько я понимаю Spring Boot проводит автоконфигурацию менеджера транзакций, и производит запросы в базу в своих дефолтных транзакциях.
Выходит что мои кастомные транзакции не создаются
@Transactional(readOnly = true, propagation = Propagation.NEVER)
public Integer someMethod(){
  Integer countFirstFolder = someRepository.count(someSpecification);
  Integer countSecondFolder = someRepository.count(someSpecification);
  return (countFirstFolder  + countSecondFolder);
}


Вывел лог в консоль и при выполнении метода вижу:
автор
[DEBUG] Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.count]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[DEBUG] Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@556c19]
[DEBUG][org.hibernate.SQL] - select count(*) from dual;
[DEBUG] Initiating transaction commit
[DEBUG] Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@68ef31]

[DEBUG] Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.count]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[DEBUG] Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@556c19]
[DEBUG][org.hibernate.SQL] - select count(*) from dual2;
[DEBUG] Initiating transaction commit
[DEBUG] Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@68ef31]


Нужно каким то образом инициализировать свой бин менеджера транзакций?
Ответ:
JonnySKS
А с readOnly тоже что то не так?

Ну, если в count() только выборка, то всё так. Можно обезопасить себя от случайной записи. И, возможно, на производительность, тоже влияет в некоторых случаях.
Вопрос: Spring Boot - работа с Mysql

Я новичок в Spring'е, прошу камнями не забрасывать, возможно вопросы покажутся простыми... но начинать знакомство в простом веб проекте со Spring'а показалось муторным, поэтому выбрал Spring Boot для этой цели. UI на Vaadin, с этим вопросов нет. Проблема с тем как мне подсоединиться к БД, извлечь данные из таблицы и добавить.
Ссылка на проект
В application.properties прописан путь, логин и пароль к БД, "spring.jpa.hibernate.ddl-auto=create" - таблица создаётся по аннотациям объявленным в User классе, класс-репозиторий имеется. Что ещё необходимо? Пробовал создавать по скрипту из schema.sql и добавлять туда данные из data.sql - не получилось.
Ответ: Этот пример специально для вас - (работа с таблицей и БД)

Моё предпочтение написанию бина в классe Application (main..)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Bean(name = "dataSource")
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:~/myDB;MV_STORE=false;MULTI_THREADED=true");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
 
        // schema init
        Resource initSchema = new ClassPathResource("scripts/schema-h2.sql");
        Resource initData = new ClassPathResource("scripts/data-h2.sql");
        DatabasePopulator databasePopulator = new ResourceDatabasePopulator(initSchema, initData);
        DatabasePopulatorUtils.execute(databasePopulator, dataSource);
 
        return dataSource;
    }
примечание: папка scripts находится в папке resources (IntelliJ IDEA)

Сообщение от Akhenaton14
В application.properties прописан путь, логин и пароль к БД, "spring.jpa.hibernate.ddl-auto=create" - таблица создаётся по аннотациям объявленным в User классе, класс-репозиторий имеется. Что ещё необходимо? Пробовал создавать по скрипту из schema.sql и добавлять туда данные из data.sql - не получилось.
если Вы планируете запускать скрипты при старте программы , то вам следует в application.properties указать "spring.jpa.hibernate.ddl-auto=none", если этого не сделать, то спринг создаст бин datasource, но проигнорирует скрипты, и будет создавать классы с @Entity
Вопрос: Как использовать netflix eureka и feign без spring-boot?

Добрый день. Я пытаюсь перейти на микросервисную архитектуру. У меня есть сервер eureka и сервисы которые взаимодействуют между собой с помощью Feign. Но к сожалению так же есть очень большое web приложения с jsf, spring, hibernate и т.д. которое я не могу переписать на spring-boot, но которое обязательно должно так же взаимодествовать с остальными сервисами. В подключении в него любых библиотек типа spring-cloud или чего-то наподобия я не ограничен. Как я могу использовать в нем eureka и feign? Заранее благодарен.
Ответ:
slippery
Добрый день. Я пытаюсь перейти на микросервисную архитектуру. У меня есть сервер eureka и сервисы которые взаимодействуют между собой с помощью Feign. Но к сожалению так же есть очень большое web приложения с jsf, spring, hibernate и т.д. которое я не могу переписать на spring-boot, но которое обязательно должно так же взаимодествовать с остальными сервисами. В подключении в него любых библиотек типа spring-cloud или чего-то наподобия я не ограничен. Как я могу использовать в нем eureka и feign? Заранее благодарен.


Ч\з HTTPClient?! :-)
Вопрос: Вопросы по Spring boot

1. На сколько правильным будет использовать его в продакшене. При обычном подходе есть xml или Java config конфигурация, все довольно гибко и предсказуемо, а при использовании boot как-то не особо, не будет ли потом проблем с добавлением в проект чего-то специфического если я все-таки завяжусь на spring boot
2. В старом проекте использовала мавеновские профили, проект собирала через mvn package -P development и т.д. У спринг boot есть файлик application.properties, плюс я добавила application-development.properties и application-staging.properties. Далее в pom.xml:
<profiles>
		<profile>
			<id>development</id>
			<properties>
				<build.type>development</build.type>
				<spring.profiles.active>development</spring.profiles.active>
			</properties>
		</profile>
		<profile>
			<id>staging</id>
			<properties>
				<build.type>staging</build.type>
				<spring.profiles.active>staging</spring.profiles.active>
			</properties>
		</profile>
	</profiles>

В application.properties поставила spring.profiles.active=development
Теперь когда делаю: mvn package -P staging варка все равно собирается с настройками из development. Что естественно, т.к. профили спринга работают в рантайме и при сборке не учитываются в отличие от профилей мавена. Получается, что при сборке мне приходится заходить в файл application.properties и менять каждый раз ключ на development или staging, в зависимости от того, что хочу получить на выходе. Как можно одной командой собирать нужную варку.
3. Захотела изменить название варки на выходе, добавила следующее:
<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<finalName>${build.type}-${project.build.finalName}</finalName>
						</configuration>
					</execution>
				</executions>
			</plugin>

В итоге в папке таргет появились две варки:
demo-0.0.1-SNAPSHOT.war
staging-demo-0.0.1-SNAPSHOT.war
Первая весит 24 мсегабайт, вторая 27, почему такая разница в размерах? И почему их две?
Спасибо
Ответ: up