applicationContext里没有配置相应的属性,在@service下为什么要配置@Autowired?

银爪地海贼1 2018-08-09 09:12:18
这是我的applicationContext

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<context:component-scan base-package="com.crc.." />
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="initialPoolSize" value="100"/>
<property name="maxIdleTime" value="500"/>
<property name="maxPoolSize" value="20"/>
<property name="minPoolSize" value="10"/>
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:com.properties"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:MyBatis.cfg.xml" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:advice id="advice" transaction-manager="transactionManager" >
<tx:attributes>
<tx:method name="insert" propagation="REQUIRED"/>
<tx:method name="update" propagation="REQUIRED"/>
<tx:method name="delete" propagation="REQUIRED"/>
<tx:method name="find" propagation="REQUIRED"/>
<tx:method name="queryForNum" propagation="REQUIRED"/>
<tx:method name="count" propagation="REQUIRED"/>
<tx:method name="queryForPage" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor advice-ref="advice" pointcut="execution(* com.crc.serviceImp.*.*(..))"/>
</aop:config>
</beans>
这是我的serviceImp
@Service
public class MembersServiceImp implements MembersService {
@Autowired
private MembersDao memberDao;

@Override
public void insert(Members members) {
// TODO Auto-generated method stub
memberDao.insert(members);
}
这里的@Autowired是什么作用呢?和applicationContext里的配置是怎么联系的?
...全文
210 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Weyland7 2018-08-10
  • 打赏
  • 举报
回复
@Autowired作用是帮你自动注入,在你的applicationContext中因为配置了<context:component-scan base-package="com.crc.." />,这行代码会扫描你在base-package包路径下所有的添加了@Controller@Repository@Service等等这些注解的类,然后把这些类注册成bean,然后如果你的MembersDao类有添加标签的,就会把对应注册的bean自动注入给memberDao,不用自己手动初始化了
zzxiaoma 2018-08-09
  • 打赏
  • 举报
回复
@Autowired是为了注入,类似于不用在类里面去初始化其他类实例,注入会自动初始化
和applicationContext配置没什么太大关系

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧