使用注解实现DI
使用注解的准备工作:
1.加入新的jar:spring-aop.jar
2.在spring的配置文件加入spring-context.xsd
步骤:
1.新建java project
2.导入Jar:
1)spring的核心jar:spring-beans.jar,spring-core.jar,spring-context.jar,spring-expression.jar
2)日志:commons-logging.jar, log4j.jar
3)注解的jar:spring-aop.jar
3.新建类,定义它的属性, 使用注解创建java对象,给属性赋值。
4.定义spring的配置文件
1.加入新的约束文件spring-context.xsd
2.声明组件扫描器,指定注解所在的包名
5.定义测试类, 从容器中获取对象。
xml的优点
1.修改对象和属性值非常的方便。源代码不用修改。
把可能经常要修改的对象放到xml配置文件中定义
2.配置文件中的定义和源代码是完全分离的,对代码没有侵入。
3.当你使用的class,没有源代码,按目前的方式,不能使用注解。
注解的优点:
1.简单,方便,开发的效率高。
2.注解是和源代码在一起的, 在看代码的时候,能知道对象的信息。
@Component: 创建的对象默认为单例
@Component:创建类的对象,创建好的对象防区到spring的Map中
属性:value,表示对象的名称(bean的id)
位置:在类的上面(在那个类上面是用就是创建那个类的对象)
@Component用法1:
@Component(value=“myStuden”)等同于
<bean id="myStudent" class ="com.bjpowernode.ba01.Student"/>
–在配置文件中配套使用:
1.声明组件扫描,base-package=“注解所在的包名”
工作原理:组建送妙棋会灶面base-ckage指定的包和子包中所有的类,找到注解 ,按注解的功能执行。
代码:
1.) <context: component-scen base-package="包名 com.bjpowernode.bo01" />//扫描指定包
2.)<context: component-scen base-package="包名 com.bjpowernode.bo01(使用,/;分割)包名 com.bjpowernode.bo02" />
3.)<context: component-scen base-package="包名 com.bjpowernode" />//直接扫描父包
@Component用法2:
省略value属性 当注解中只是用value的情况下是可省略value的
代码:@Component(“myStudent”)
@Component用法3:
可省略不写类名,由框架自动完成类名生成, 生成规则, 由类名的首字母小写 ,代码@Components
@Component功能相同的其他注解
@Repository:放在dao层上面, 创建dao对象
@Service:放在Service上面使用,创建Serviceduixiang
@Controller:放在处理器上面, 创建处理器对象(处理器就是控制器)