Хорошая практика для включения конфигурации XML в путь к классу Java?

Начиная с MySql 8.0.16, вы можете добавить ограничение CHECK , которое фактически что-то делает.

(Между MySql 5.7 и 8.0.16 вы можете добавить один, но он будет просто проигнорирован)

Для MariaDb рабочее ограничение CHECK было реализовано начиная с версии 10.2.1. Ссылка

Так что, если ваша версия поддерживает это, то это может быть что-то вроде этого примера:

create table Friend (
  id int primary key auto_increment, 
  name varchar(30) not null
);

insert into Friend (name) values
('John Doe'), ('Jane Shepard')

create table Friendship (
  id int primary key auto_increment,
  fk_friend_one_id int not null,
  fk_friend_two_id int not null,
  CONSTRAINT chk_friend2_gt_friend1 check (fk_friend_two_id > fk_friend_one_id),
  CONSTRAINT fk_friend_one_id foreign key (fk_friend_one_id) references Friend(id),
  CONSTRAINT fk_friend_two_id foreign key (fk_friend_two_id) references Friend(id),
  CONSTRAINT idx_friends unique index (fk_friend_one_id, fk_friend_two_id)
);
blockquote>
insert into Friendship (fk_friend_one_id, fk_friend_two_id) value (2, 1);
[112 ] blockquote>
insert into Friendship (fk_friend_one_id, fk_friend_two_id) value (1, 1);
CONSTRAINT `chk_friend2_gt_friend1` failed for `mydb`.`Friendship`
blockquote>
insert into Friendship (fk_friend_one_id, fk_friend_two_id) value (1, 2);
blockquote>
select * from Friendship order by id;
id | fk_friend_one_id | fk_friend_two_id
-: | ---------------: | ---------------:
 1 |                1 |                2
blockquote>

db <> скрипка здесь

36
задан 16 May 2009 в 18:01
поделиться

4 ответа

Обычно я сначала просматриваю системное свойство, а затем путь к классам. так:

java -DconfigFile=/filelocation/file.xml

можно прочитать как:

String propfile = System.getProperty(configFile);
if (propfile != null) {
 // read in file
  new File(propfile);
 ...
} else {
  // read in file from classpath
  getClass.getResource("/configfile.xml")
}
229
ответ дан 27 November 2019 в 05:05
поделиться

I agree with the previous poster (+1) - have an option in case some day you will need it. Однако есть одна загвоздка. Вы можете вызвать у себя головную боль, если такой мощный инструмент попадет в чужие руки. Нет большой разницы между файлами контекста Spring и классами Java, это код. Итак, проверьте, кто ваши пользователи. Один чрезмерно увлеченный гуру QA может сделать вашу жизнь несчастной, если вы не подготовитесь.

3
ответ дан 27 November 2019 в 05:05
поделиться

Я обычно помещаю файлы конфигурации XML в путь к классам и показываю конфигурацию, которая может быть адаптирована (например, для различных сред), во внешние файлы свойств, используя PropertyPlaceholderConfigurer или подобное (зависит от фактических требований).

Хороший способ создания профилей - это иметь файлы свойств с набором настроек для каждой среды и позволить администратору выбрать тот, который нужен предоставление системного свойства, значение которого затем переводится в поиск файла свойств. Подробную информацию см. В документе API PropertyPlaceholderConfigurer .

2
ответ дан 27 November 2019 в 05:05
поделиться

Приятно иметь возможность настраивать его обоими способами - либо напрямую как файл, либо через ресурс в пути к классам, который может быть или не находиться в файле jar. Это дает вам большую гибкость.

61
ответ дан 27 November 2019 в 05:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: