У вас есть несколько решений. Не зная природу генерации кода, трудно помочь вне общих черт. Тем не менее, АОП кажется излишним.
- Изменить шаблон, который генерирует свой источник, или использовать его источник функциональности Gen в
- Alter источник пост поколения.
- Используйте подкласс или композит в своем источнике.
1. Если вы можете, измените шаблоны. Большинство генераторов знают, что источник, который они генерируют, может не соответствовать точно вашим потребностям и разрешить либо вставку кода, либо модификацию подписи. Даже если это не супер-легко, у большинства из них есть шаблоны, которые вы можете вытащить из класса и переупаковать.
2. Простой поиск и замена могут изменить подпись кода, и вы можете наполнить свою собственную реализацию в конце сгенерированного класса. Это должно быть интегрировано в ваш процесс сборки.
3. Мой выбор будет состоять в том, чтобы либо скомпилировать сгенерированный класс в свой класс, либо подклассировать его, если имеет смысл это сделать. Это супер, супер легко и требует только тривиальных, автоматических изменений. Я также могу изменить имя сгенерированного класса.
Другими словами, у вас есть класс Toto
с некоторыми сгенерированных методов, скажем someMethod
:
public class Toto {
public void someMethod() { ... }
}
Создать новый, хорошо названный класс, что либо подклассы это, или композиты в, соответственно:
Для некоторых типов проблем я бы не стал жаловаться на расширение Toto
таким образом, например, для DAO может иметь смысл просто придерживаться дополнительных функций. Наследование может быть болью в некоторых (наиболее?) Ситуациях, и компоновка может быть более безопасной. IDE могут генерировать делегированные методы, или вы можете использовать манипуляции с байтовым кодом (например, Lombok) для автоматического генерации делегатов, но использование среды IDE является более универсальным.
Для АОП вы можете использовать Spring. –
Подклассируйте его в свой код и добавьте то, что вам нужно. –
Другими словами, не используйте сгенерированный класс напрямую; подкласс с дополнительной функциональностью, в которой вы нуждаетесь. Я часто делал это с классами Hibernate, хотя композиция - это еще один подход, возможно, лучший. –