Iln*_*nur 10 spring annotations spring-mvc autowired
我有一些自动注释的问题.我的应用程序如下所示:
这是控制器:
@Controller
public class MyController {
@Autowired
@Qualifier("someService")
private SomeService someService;
....
}
Run Code Online (Sandbox Code Playgroud)
这是一个服务层:
public interface SomeService {
...
}
@Service
public class SomeServiceImpl implements SomeService{
@Autowired
@Qualifier("myDAO")
private MyDAO myDAO;
....
}
Run Code Online (Sandbox Code Playgroud)
和DAO层:
public interface MyDAO{
....
}
@Repository
public class JDBCDAOImpl implements MyDAO {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
....
}
Run Code Online (Sandbox Code Playgroud)
这是一个app-service.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" />
Run Code Online (Sandbox Code Playgroud)
所以......当我启动一个web-app时,MyController自动正确(SomeServiceImpl类对象正确注入someService字段),但someService的myDAO feild有空值(未正确注入).
你能帮我找个问题吗?
PS它很有意思,但是当我将myDAO中的"bean id"更改为另一个(例如myDAO2)时,系统会给我一个错误,即无法执行注入,因为bean myDAO不存在.那么,Spring注射,但它在哪里?为什么它不能正常工作?
Iln*_*nur 11
我找到了解决方案.正如Javi所说(非常感谢你,Javi),我必须使用@Repository和@Service注释来注释DAO和服务层类.现在我试着像这样写:
@Service("someService")
public class SomeServiceImpl implements SomeService{
@Autowired
@Qualifier("myDAO")
private MyDAO myDAO;
....
}
Run Code Online (Sandbox Code Playgroud)
和
@Repository("myDAO")
public class JDBCDAOImpl implements MyDAO {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
....
}
Run Code Online (Sandbox Code Playgroud)
一切正常!!!
但我仍然没有找到这个问题的答案:如果应用程序将更复杂,并且将具有更复杂的结构,哪些@Repositore和@Service注释不是某些类的首选,如何正确注入位于较低级别的bean(在字段中)课程领域,或课堂领域)(@Autowire当然还有注释)?
| 归档时间: |
|
| 查看次数: |
44883 次 |
| 最近记录: |