springDI注解
通过spring的注解完成java对象的创建,属性,代替xml文件
实现步骤:
1.加入依赖
2.创建类,在类中加入注解
3.创建spring的配置文件
声明组件扫描标签指明注解在你项目中的位置
4.使用注解创建对象,创建容器ApplicationContext
语法:组件扫描器:component-scan,组件就是java对象 base-package:指定注解在你项目中的包名
工作方式把包中和子包所有的类进行扫描,找到类的注解,按照注解的功能创建对象,或给对象赋值
例如: <context:component-scan base-package="包名"/>
注解:
@Component 创建对象的,等同于<bean></bean>的功能 属性:value 就是对象的名字,也就是bean的id值,
value的值是唯一的,创建的对象在整个spring容器中就一个 且位置在 在类的上面
@Component(value = "myStudent") 等同于 <bean id="myStudent" class="ba01.Student"/> 调用无参构造
@Repository(持久层类的上面):放在dao的实现类上面,表示创建dao对象,dao对象是能访问数据库的
@Service(用在业务层的上面):放在service的实现类上面,创建service对象,service对象是做业务处理的,可以有事务等功能的
@Controller(用在控制器的上面):放在控制器类的上面,创建控制器对象的,控制器对象,能接受用户提交参数,显示请求的处理结果
以上三个处理语法都一样,都能够创建对象。但是具有额外功能 ,可以给项目对象进行分层
@Value():简单类型的属性赋值
属性:value 是String类型的,表示简单的属性值
位置:1.在属性定义的商上面,无需set方法,推荐使用
2.在set方法的上面
引用类型注解:
@Autowired:spring框架提供的注解,实现引用类型的赋值
spring中通过注解给引用类型赋值,使用的是自动注入原理 ,支持byName,byType
属性:required,是一个boolean类型的,默认true
required=true:表示引用类型赋值失败,程序报错,并且终止执行
required=false:引用类型如果赋值失败,程序正常执行,引用类型为null
@Autowired:默认使用byType自动注入
位置:1)在属性定义上面,无需set方法,推荐使用
2)在set方法上面
如果要使用byName方式,需要做到的是:
1.在属性上面加入@Autowired
2.在属性上面加入@Qualifier(value="bean 的id"),表示使用指定名称的bean完成赋值
@Resource:来自jdk中的注解,spring框架提供了对这个注解的支持,可以使用它给引用类型赋值。使用的也是自动注入原理,支持 byName byType,默认为byName
当byName 失败时执行byType
位置:1.在属性定义上面,无需set方法,推荐使用
2.在set方法上面