java - Scope of Controllers ,Service,Repository in Spring Web Application? -


i creating web application using spring ,hibernate. suppose multiple users wants register.i create registration bean(prototype or request or session scoped) , autowire in controller.

now passing bean registration service(annotated "@transactional" annotation) autowired in controler. service pass recieved registeration bean object dao(this dao autowired in service)if service , dao singelton would'nt requests mixed multiple users?

here have done :i have created scope of service , dao "request". right approach? or else make service , dao singelton?

my logic behind request scoped: reason making service , dao request scoped if multiple users call registerationservice.registeruser(bean); controller @ same time , scope singelton there no consistency coz there 1 object's methods called different inputs.

let me know wrong.

registeration bean

@component(value="registerbean") @scope(proxymode = scopedproxymode.target_class, value = "request") public class registerbean {   @notnull private string username;  private string lastname; @notnull private string firstname;  string email_address; string password; string confirmpassword; string gender;  //getters , setters   } 

controller

package com.clicktoshop.controllers;        @controller     @sessionattributes("user_info")     public class loginpagecontroller {             registerbean registerbean;//used          registerationservice registerationservice;//used            @autowired         @qualifier("registerationservice")         public void setregisterationservice(registerationservice registerationservice) {             this.registerationservice = registerationservice;         }             @autowired         @qualifier("registerbean")         public void setregisterbean(registerbean registerbean) {             this.registerbean = registerbean;         }            @modelattribute(value = "registerbean")         registerbean returnmodelattribute() {             return registerbean;         }          @requestmapping(value = "/login-page.html")         public string showloginpage() {     system.out.println("showing login page");     system.out.println(registerbean);             return "login-page";          }            @requestmapping(value = "/newuser-register", method = requestmethod.post)         public string registernewuser( @modelattribute("registerbean") @valid registerbean bean, bindingresult result,final redirectattributes redirectattr)                 throws nosuchalgorithmexception, unsupportedencodingexception {             //some validation code       registerationservice.registeruser(bean);                        return "redirect:successregisteration";                 }           }         }     service layer          @service("registerationservice")         @transactional         @scope(proxymode = scopedproxymode.target_class,value="request")          public class userserviceimpl implements registerationservice {               private user_details_pojo usertoregisterpojo;             private abstracthibernatedao userdao;               @autowired             public void setuserdao(abstracthibernatedao userdao) {                 userdao = userdao;             }                @autowired             @qualifier("usertoregisterpojo")             public void setusertoregisterpojo(user_details_pojo usertoregisterpojo) {                 this.usertoregisterpojo = usertoregisterpojo;             }             //main implementation code starts here              @override              public void registeruser(object userbean) {                 registerbean bean=(registerbean) userbean;                 //bean or model converted pojo               userdao.save(usertoregisterpojo);//calling dao specified pojo                }            } 

dao:

public abstract class abstracthibernatedao<t extends serializable> {      public class<t> clazz;//class object reference      protected sessionfactory mysessionfactory;       @autowired     public void setmysessionfactory(sessionfactory mysessionfactory) {         this.mysessionfactory = mysessionfactory;     }      public t findonebyname(final string name){          return (t) getcurrentsession().createquery("from "+clazz.getname()).uniqueresult();     }       public void setclazz(final class<t> clazztoset) {         this.clazz = clazztoset;     }      public t findone(final long id) {         return (t) getcurrentsession().get(clazz, id);     }      @suppresswarnings("unchecked")     public list<t> findall() {         return getcurrentsession().createquery("from " + clazz.getname()).list();     }      public void save(final t entity) {         getcurrentsession().merge(entity);     }      public void update(final t entity) {         getcurrentsession().update(entity);     }      public void delete(final t entity) {         getcurrentsession().delete(entity);     }      public void deletebyid(final long entityid) {         final t entity = findone(entityid);         delete(entity);     }      protected session getcurrentsession() {          return mysessionfactory.getcurrentsession();     } } 

concrete dao

@repository @scope(proxymode = scopedproxymode.target_class,value="request") public class userdao extends abstracthibernatedao<user_details_pojo>{   } 

the services , daos should stateless. allow configure them spring singletons. hope mean when "singleton".

all threading concerns, including thread pooling, taken care of infrastructure: web/java ee server , spring di.


Comments

Post a Comment

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -

android - send complex objects as post php java -