Spring-注解开发
1.在applicationContext.xml中添加这一句代码能够让IOC容器加载的时候去扫描对应4种注解的类:
<context:component-scan base-package="com.bjsxt.tmall"></context:component-scan>
<?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" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 在IOC容器加载的时候,自动扫描tmall包及子包中拥有 以下4种注解的类: @Respository - 对应DAO @Service - 对应Service @Controller - 对应Action @Component - 其他的情况 --> <context:component-scan base-package="com.bjsxt.tmall"></context:component-scan> </beans>
2.现在来开发各层的代码:
(1)首先是action:action依赖于service,那么问题来了。我们如何才能去标注这个类是action呢?怎么才能让声明的service类去动态获取对象呢?
@Controller:能够去标注 这是控制层的类。在IOC容器被创建的时候,IOC会去扫描被这个注释标注的类并且创建该类。
@Controller //Spring对action层的注释
@Resource(IOC注入) : 被标注的属性会根据属性名(类名小写的属性名)来从IOC容器中找到对于的类,使用反射来new出对象并注入到这个属性里面
@Resource //IOC注入 private CashierService cashierService = null;
@SuppressWarnings("all") //忽略警告 @Controller //Spring对action层的注释 @Scope(value="prototype") //标注该类是多例模式Spring默认单例,而Action是一个线程请求一个对象。 public class CashierAction { //Action依赖Service @Resource //IOC注入 private CashierService cashierService = null;
(2) service和action同样 如法炮制
@Service //Spring对service层的注释
1 @Service //Spring对service层的注释 2 public class CashierService { 3 //servoce依赖调用dao层 4 @Resource //IOC容器注入 5 private CashierDao cashierDao = null;
(3)dao层是访问数据库层,没有依赖的层但是却会依赖entity实体类
@Resource:对dao层的注释。
@Resource:IOC注入
但是这里注入的并不是MVC中的类,是一个entity实体类,这个实体类并不是用注解配置的,而是使用applicationContext.xml配置的!并且还是使用配置文件配置,用注解的方式注入。
1 @Repository //Spring对dao层的注释 2 public class CashierDao { 3 @Resource 4 private Dbinfo dbinfo = null;
applicationContext.xml配置实体类:
1 <bean id="dbinfo" class="com.wzh.common.Dbinfo"> 2 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 3 <property name="url" value="123"></property> 4 <property name="username" value="root"></property> 5 <property name="password" value="123"></property> 6 </bean>
在这里可以看出,注解和配置文件并不冲突,是可以配合使用的。
注解开发,比配置文件开发简单很多,但是有得就有失。它失去的就是:注解开发时在java类当中进行的,它不能像配置文件一样直接改配置文件来动态修改Java代码,但是尽管没有使用配置文件方式可维护性那样高,但其实修改Java代码 也只是修改变量名而已
时间: 2024-10-08 18:41:37