私はautowireアノテーションでいくつかの問題があります。ここで春@Autowiredが動作しない
がコントローラである:
@Controller
public class MyController {
@Autowired
@Qualifier("someService")
private SomeService someService;
....
}
それは、サービス層です:これはアプリサービスです
public interface MyDAO{
....
}
@Repository
public class JDBCDAOImpl implements MyDAO {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
....
}
:層
public interface SomeService {
...
}
@Service
public class SomeServiceImpl implements SomeService{
@Autowired
@Qualifier("myDAO")
private MyDAO myDAO;
....
}
そしてDAO私のアプリは、このようになります.xmlファイル:
....
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"/>
<bean id="SomeService" class="com.service.SomeServiceImpl" />
<bean id="myDAO" class="com.db.JDBCDAOImpl" />
So ... Webアプリケーションを起動しているときにMyController Autowiresが正しく(SomeServiceImplクラスオブジェクトによって正しく注入されたsomeServiceフィールド)、someServiceのmyDAO feildにnull値(正しく挿入されていません)があります。
問題を見つけるのを手伝ってもらえますか?
P.S.面白いですが、myDAOから別のもの(例えばmyDAO2)に「bean id」を変更すると、システムは私にエラーをもたらし、bean myDAOが存在しないため注入ができなくなります。ですから、Springは注入を行いますが、それはどこにありますか?なぜそれが正しく動作しないのですか?
は、なぜあなたはDAOでサービスと@Repositoryに@Serviceアノテーションを使用していませんか? – Javi
はい...私はそれを使用します。編集...私のアプリは上記のコードより複雑なので、私はそれらを書くことを忘れてしまった。しかし、その場所のエラー。 – Ilnur
@Repositoryアノテーションと@Serviceアノテーションを追加した場合、それらをxmlでBeanとして定義する必要はありません。 – Javi