Правила (з пам'яті):
- Bean має
@LocalBean
анотацію -> bean має вигляд без інтерфейсу
- Bean має
@Local
анотацію -> bean має місцевий вид
- Bean має
@Remote
анотацію -> bean має віддалений вигляд
- Bean не має анотацій подання, але безпосередньо реалізує інтерфейс, який має анотацію @Local -> bean має локальний вигляд
- Bean не має анотацій подання, але безпосередньо реалізує інтерфейс, який має анотацію @Remote -> bean має віддалений вигляд
- Bean не має анотацій подання, але безпосередньо реалізує інтерфейс, який не має анотацій подання -> bean має локальний вигляд
- Bean не має анотацій подання та не реалізує інтерфейсів -> bean має подання без інтерфейсу
Отже, використання @LocalBean
та використання жодної анотації - це обидва способи отримання перегляду без інтерфейсу. Якщо ви просто хочете не переглядати інтерфейс, то найпростіше не коментувати. За умови, що ви також не реалізуєте жодних інтерфейсів.
Частина причини @LocalBean
існує для додавання подання без інтерфейсу до компонента, який також має інтерфейс. Думаю, сценарієм, який був найвищим у свідомості авторів специфікацій, був такий, коли у вас є така квасоля:
@Stateless
public class UserPreferences {
public String getPreference(String preferenceName);
public Map<String, String> getPreferences();
}
Де ви хотіли б виставити обидва методи локально, але лише getPreferences()
віддалено грубіше . Ви можете зробити це, оголосивши віддалений інтерфейс саме цим методом, а потім просто вдаривши @LocalBean
по класу bean. Без нього вам довелося б писати безглуздий локальний інтерфейс, аби локально виставити обидва методи.
Або, якщо подивитися на це по-іншому, @LocalBean
існує, оскільки існує таке поняття, як перегляд без інтерфейсу, а опція заборони анотацій існує як зручний ярлик.