APPLICATION CONTEXT SPRING

el apllication context carga mis dao al inicio de la aplicacion pero todos los hilos hacen uso de esos daos, el aplicattion context es thread safe???

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Si es threadsafe

Aunque el ApplicationContext efectivamente es ThreadSafe puede darse el caso en que una aplicación tenga problemas con los datos al accesarlos en paralelo. Para ello necesitas saber que en las clases DAO (ni en ningunaa otra que quieras ejecutar en mas de 2 hilos, como un servicio quizás) no se deben almacenar variables de instancia, no debes guardar estado de los objetos porque los beans (comunmente) son singletons, a menos que en Spring estés tratando tus beans como Prototypeque eso quiere decir que cada vez que necesites ese bean se retorna una instancia nueva de ese objeto (para lo cual pierde sentido Spring en el caso de los DAO, IMHO).

ok

basicamente lo trabajo asi:
archivo de config

 <bean id="Dao1" class="dao.LoteriaDAOImpl">
              <property name="dataSource" ref="dataSource" />
      </bean>

    <bean id="Dao2" class="dao.LoteriaDAOImpl2">
              <property name="dataSource" ref="dataSource" />
      </bean>    
 
      <bean id="service" class="userservice.ManagedBeanImpl">
              <property name="Dao1" ref="Dao1"/>
              <property name="Dao2" ref="Dao2"/>
      </bean>

dao1

public interface LoteriaDAO {
    void setDataSource(DataSource ds);  
    public  ArrayList<DTOLoteria> loteriasDisponiblesGana(long numeroransaccion ) throws Exception;
   
}
public class LoteriaDAOImpl implements LoteriaDAO
{
   
    private DataSource dataSource;

    @Override
  public void setDataSource(DataSource ds) {
    dataSource = ds;
  }

    @Override
    public ArrayList<DTOLoteria> loteriasDisponiblesGana(long numeroransaccion ) throws Exception{
   
           //codigo here
    }

como vez lo que cargo al conte es el service con todos mis daos

    <bean id="service" class="app.userservice.ManagedBeanImpl">
              <property name="Dao1" ref="Dao1"/>
              <property name="Dao2" ref="Dao2"/>
      </bean>

quisiera saber si de esa forma es thread-safe porque va a ver muchos hilos accediendo a mis daos

Imagen de ezamudio

no

el application context no es thread-safe pero no importa porque solamente es un componente que crea todos los componentes que definas y los conecta entre sí. Después de que eso ocurre ya es tu bronca iniciar tu aplicación (aunque podrías incluso saltarte ese paso si tienes un método que inicia la ejecución de tu programa y lo anotas con @PostConstruct).

Si los DAOs son thread-safe o no eso sólo tú lo sabes.