一.注解的作用
可以让你更快速高效的开发项目
当进行包扫描的时候会把加有@Component,@Repository,@Service,@Controller注解组件交由工厂管理
<context:component-scan base-package="com.baizhi.*"></context:component-scan>
二.常用的注解
1.@Component
如果当前类既不是dao又不是service也不是action但是需要交给工厂管理 建议使用@Component
作用:就是将当前类作为spring中对象的候选者
修饰范围:主要用在类上 默认创建的名字为当前类名的首字母小写 手动指定名字需要添加value参数 @Component(value = "userDao")
2.@Repository spring建议在dao层加@Repository
3.@Service spring建议在service层加@Service
4.@Controller spring建议在Controller层加@Controller
将一个对象交由工厂管理的方式
1.<bean>标签的形式 其他框架提供的类
2.注解+包扫描
5.@Scope注解 范围:用在类上表明当前交由工厂管理的对象 是单例 还是多例
主要使用
@Scope(value = "prototype") 多例
@Scope(value = "singleton") 单例
了解
@Scope(value = "request") 一次请求创建一个对象
@Scope(value = "session") 一个会话创建一个对象
建议使用 Autowired
6.@Autowired :该注解放置在set方法或者是成员变量上 作用完成自动注入 默认根据类型进行注入
@Autowired是由spring提供的
7.@Resource : 完成自动注入 默认先根据名字进行注入 如果找不到则使用类型注入
@Resource是java提供
8.@Transactional 该注解可以加在方法上 也可以加在类上 当方法上和类上都有此注解 局部优先(方法上注解生效)作用:为当前方法或者是类中的所用方法加事务
注意:使用@Transactional
不用写这种配置
<!--添加事务通知-->
<tx:advice id="interceptor" transaction-manager="dataSourceTransactionManager">
<tx:attributes>
<tx:method name="findAll"/>
</tx:attributes>
</tx:advice>
<!--组装事务切面-->
<aop:config>
<aop:pointcut id="pt" expression="execution(* com.baizhi.service.*.*(..))"/>
<aop:advisor advice-ref="interceptor" pointcut-ref="pt"></aop:advisor>
</aop:config>
替代为
<!--创建事务管理器-->
<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource">
</property>
</bean>
<!--开启事务注解式驱动-->
<tx:annotation-driven transaction-manager="dataSourceTransactionManager">
</tx:annotation-driven>
9.@ResponseBody SpringMVC开发ajax返回json(加在方法上,返回值上)
相关的jar
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
作用:用来返回json数据
注意:如果返回的独享数据中有日期格式 需要注解@JSONFormart(pattern=“”)
如果ajax请求需要数据处理@ResponseBody
不管ajax的请求有没有数据返回 都建议加入 @ResponseBody
问题:如果没有数据返回 会根据@RequestMapping的值做视图解析 一定找不到 会报404