La propriété "source de données" n'est pas nécessaire d'Erreur en java (Spring)
Je développe une application web dans Java (Spring)
Mon fichier java est que,
try
{
JdbcTemplate jt = new JdbcTemplate(dataSource);
System.out.println("Connection ....."+jt.toString());
Connection conn;
Statement st;
conn =DriverManager.getConnection(jt.toString());
conn = (Connection) jt.getDataSource();
st=conn.createStatement();
System.out.println("Connection created....."+st);
}
catch (Exception e) {
System.out.println("Error Found...."+ e.getMessage());
System.out.println("Strack Trace....."+e.getStackTrace());
}
Mon spring-servlet.xml fichier,
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/cjbranchdb" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="JdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
Mais il obtient une erreur que,
Error Found: Property 'dataSource' is required.
Strack Trace: [Ljava.lang.StackTraceElement;@7948dd
Ici, je veux faire une connexion en Java fichier et de le transmettre à une autre variable que Jasper Rapport.
S'il vous plaît aider, Comment résoudre ce problème?
- Je dois dire qu'il y a trop de problèmes dans le code de votre question. Vous êtes probablement complètement nouveau monde Java. Je vous suggère de passer par nouveau Printemps de la documentation, des tutoriels et de l'application de référence.
- pouvez-vous s'il vous plaît corriger mes problèmes de code ou au moins expliquer sur il des questions...s'il vous plaît...
Vous devez vous connecter pour publier un commentaire.
Je devine que vous êtes complètement nouveau pour Java, JEE, Spring et JDBC. Comme je l'ai dit dans mon commentaire, il est difficile de répondre à votre question, si ce que vous faites là est incorrect dans sa base. Je vais essayer d'aller à travers quelques thèmes et j'espère aussi cerner le point d'où votre question est.
Printemps app structure
Vous devez assurez-vous de bien structurer votre projet:
src
main
java
- répertoire pour les sources Javain/mmali/springtest/controller/IndexController.java
- Votre contrôleur de classeresources
- répertoire pour les non-Java (re)sourceswebapp
de la racine de l'application web de ressourcesWEB-INF/web.xml
- JEE web de configuration de l'applicationWEB-INF/spring-servlet.xml
- contexte de l'application de configuration pour dispatcher servletpom.xml
- Maven config (dans le cas où vous utilisez Maven)Je dirais que c'est une structure commune pour les projets Java, la plupart du temps "normalisée" par Maven.
Corriger JEE config
Vous avez besoin d'avoir une
web.xml
configuration:C'est une configuration de base (sans la racine de contexte), qui permettra d'utiliser votre
spring-servlet.xml
que le Printemps contexte de configuration.Correcte configuration Spring
Vous avez besoin d'avoir corriger le Printemps contexte de configuration:
Cela va charger toutes les classes annotées avec
@Component
(et de ses compagnons@Controller
,@Service
,@Repository
) comme les haricots. Bean dans un contexte de Printemps de l'application est un objet géré par le Printemps -> c'est à dire un objet qui est instanciée par la source elle-même. Lorsque vous voulez travailler avec un Printemps bean, vous devez avoir injecté (par exemple en utilisant@Autowired
annotation) ou vous avez besoin de sortir deApplicationContext#getBean
manuellement.De travail avec JDBC
De travail avec JDBC est pénible avec tous les fermer ressources et vérifié les exceptions. C'est pourquoi le Printemps-JDBC projet enveloppements API JDBC de sorte que vous n'avez pas à l'utiliser.
Pour mettre en valeur la façon dont vous devriez travailler avec JDBC et aussi comment laisser de Printemps injecter des dépendances, voici un contrôleur simple:
Noter que, dans une application réelle, vous ne permettrait pas de contrôleur de travailler avec votre source de données directement, mais plutôt par le service et la couche de données.
Prochaines étapes
System.out.println
dans une application web à nouveau ;). Je suggère slf4j avec sa liaison simple pour commencer (plus tard, vous pouvez le configurer pour utiliser logback ou log4j).<tx:annotation-driven/>
avec@Transactional
). Il pourrait regarder comme de la magie au premier abord, mais lorsque vous découvrez quelque chose sur les AOP et les classes proxy, vous serez alors commencer à vraiment appretiating les principes de la des travaux du Printemps.spring-dispatcher-servlet.xml
fichier?JdbcTemplate jt = new JdbcTemplate(dataSource);
Vous ne pouvez pas simplement utilisernew
mot-clé pour construire un objet d'haricot. Évidemment, les références à cet objet sera nulle.Au lieu de cela, vous devriez demander de printemps à vous donner pour objet d'haricot. Quelque chose comme ça.
Dans ce cas, le printemps va injecter la dépendance ie
datasource
comme indiqué dans la configuration.Fonction du nom de fichier, je suppose que vous êtes la construction d'une application basée sur le web.
Pour la capture de l'erreur, veuillez utiliser un bon de journalisation au lieu de Système.out.println.
En fonction de l'erreur, de la source de données semble nulle. Veuillez vérifier si votre web.xml a défini la servlet fichier xml, comme
En outre, DriverManagerDataSource est assez bon pour tests uniquement. Pour une utilisation en production, veuillez tenir compte de Apache Jakarta Commons DBCP ou C3P0. Voir les détails à l'officiel page web.
Depuis votre fichier XML a mentionné
le fichier XML doit consister en une servlet section d'appel de l'objet id=JdbcTemplate. Par exemple,