Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > отличие class от ManagedBean


Автор: 4epT 1.10.2010, 11:37
Добрый день! В чем отличие class от managedBean ?
вот допустим я пишу bean который будет складывать 2 числа
Код

@SessionScoped
@ManagedBean (name = "calculate")
class Calculate
{
 ......
}


в чем отличие будет если не указать эти аннотации?

использую JSF 2.0


P.S. И если можно объясните разницу (что можно делать и что нельзя делать) между SessionScoped, ApplicationScoped, CustomScoped, RequestScoped, NoneScoped, ViewCsoped =)

Автор: jk1 1.10.2010, 11:45
Цитата

In an JSF application, backing beans (managed beans) are used that can be  associated with UI components. Backing Beans are nothing but JavaBeans which defines properties and methods. These properties are bound to component values or component instances. setX() and getX() methods are defined and implemented for all properties. We can also define methods that can be used for different purpose like event handling, navigation, validation etc. that are associated with component. To bind value of the component to the property of the bean or to refer method of the bean from component tag, Expression Language (EL) syntax is used. For example, #{BeanName.propertyName}can be used to bind the value of the component to the property "propertyName" of the bean "BeanName". #{BeanName.methodName} can be used to refer method "methodName()" of the bean "BeanName".

Автор: SlavaSemushin 2.10.2010, 20:29
Цитата

В чем отличие class от managedBean ?


Ниже моё понимание вещей, без претензий на истину.

Исходя из названия managed bean это бин (который в свою очередь простой класс), который кем-то управляется. В данном случае управляется он JSF. Т.е. согласно конфигу, или аннотациями, JSF создаёт и удаляет его для вас -- т.е. следит за его временем жизни. Это, в моём понимании, и есть managed. Тут, к месту, также упомнять IoC container и вообще IoC (DI) (см. в википедии или гугле).

Цитата

в чем отличие будет если не указать эти аннотации?


У вас две аннотации сейчас: @ManagedBean и @SessionScoped. Если не указывать обе, то получится простой класс (т.н. POJO). Если указать, только @ManagedBean, то JSF создаст для вас этот бин с временем жизни по умолчанию (насколько помню, это request) А вот если указать только @SessionScoped, хм, не знаю точно, что будет, наверное, ошибка -- проверьте, если хотите.

Цитата

P.S. И если можно объясните разницу (что можно делать и что нельзя делать) между SessionScoped, ApplicationScoped, CustomScoped, RequestScoped, NoneScoped, ViewCsoped =)


ApplicationScoped -- бин "живёт" на протяжении жизни всего вашего приложения (т.е. как только вы запустили контекст, этот бин создаётся, а при уничтожении контекста, бин тоже уничтожается.) 
CustomScoped -- не помню точно, но там программисту дали какую-то свободу по управлению времени жизни бином (лучше всего в гугле поискать)
RequestScoped -- время жизни бина -- один запрос
NoneScoped -- не помню точно, но где-то на SO (http://stackoverflow.com/questions/3086896/what-is-none-scope-bean-and-when-to-use-it) был вопрос зачем он нужен, и, кажется, никто ничего не смог придумать smile
ViewScoped -- опять же, точно не подскажу, но кажется существует только внутри отображения (view)

А есть ещё flash scope, кстати, это на уровне двух страниц при использовании то ли редиректа,то ли форвардинга, точно не помню. Опять же в гугле лучше поискать smile

Надеюсь, что мой ответ был полезен.

Автор: 4epT 2.10.2010, 22:23
Цитата(SlavaSemushin @ 2.10.2010,  20:29)
Цитата

В чем отличие class от managedBean ?


Ниже моё понимание вещей, без претензий на истину.

Исходя из названия managed bean это бин (который в свою очередь простой класс), который кем-то управляется. В данном случае управляется он JSF. Т.е. согласно конфигу, или аннотациями, JSF создаёт и удаляет его для вас -- т.е. следит за его временем жизни. Это, в моём понимании, и есть managed. Тут, к месту, также упомнять IoC container и вообще IoC (DI) (см. в википедии или гугле).

Цитата

в чем отличие будет если не указать эти аннотации?


У вас две аннотации сейчас: @ManagedBean и @SessionScoped. Если не указывать обе, то получится простой класс (т.н. POJO). Если указать, только @ManagedBean, то JSF создаст для вас этот бин с временем жизни по умолчанию (насколько помню, это request) А вот если указать только @SessionScoped, хм, не знаю точно, что будет, наверное, ошибка -- проверьте, если хотите.

Цитата

P.S. И если можно объясните разницу (что можно делать и что нельзя делать) между SessionScoped, ApplicationScoped, CustomScoped, RequestScoped, NoneScoped, ViewCsoped =)


ApplicationScoped -- бин "живёт" на протяжении жизни всего вашего приложения (т.е. как только вы запустили контекст, этот бин создаётся, а при уничтожении контекста, бин тоже уничтожается.) 
CustomScoped -- не помню точно, но там программисту дали какую-то свободу по управлению времени жизни бином (лучше всего в гугле поискать)
RequestScoped -- время жизни бина -- один запрос
NoneScoped -- не помню точно, но где-то на SO (http://stackoverflow.com/questions/3086896/what-is-none-scope-bean-and-when-to-use-it) был вопрос зачем он нужен, и, кажется, никто ничего не смог придумать smile
ViewScoped -- опять же, точно не подскажу, но кажется существует только внутри отображения (view)

А есть ещё flash scope, кстати, это на уровне двух страниц при использовании то ли редиректа,то ли форвардинга, точно не помню. Опять же в гугле лучше поискать smile

Надеюсь, что мой ответ был полезен.

Спасибо большое) очень понятно объяснил!)

Автор: SlavaSemushin 3.10.2010, 17:45
P.S. Я когда JSF изучал, то насобирал для себя разных ссылок -- http://freesource.info/wiki/devel/Java/JSF/links Возможно, вам пригодится (по JSF2 очень интересная серия статей JSF2 Fu на IBM-е).

Автор: 4epT 3.10.2010, 22:08
Цитата(SlavaSemushin @ 3.10.2010,  17:45)
P.S. Я когда JSF изучал, то насобирал для себя разных ссылок -- http://freesource.info/wiki/devel/Java/JSF/links Возможно, вам пригодится (по JSF2 очень интересная серия статей JSF2 Fu на IBM-е).

Спасибо, почитаю))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)