在官方文档中查阅如何使用spring注解:(annotation) https://spring.io/
spring官网-----》projects---》spring framework ---》read the reference Documentation(阅读文献)
@Componment:spring 管理类中的基本注解,声明了这个是一个类(xxx.bean,xxx.entity)
@Reponsitory:用于将数据访问层(DAO层)的类标识为Spring Bean,简单说就是DAO可以用这个注解(XXX.dao)
@Service:用于业务类的注解,只能把这个注解用于业务类(xxx.service,xxx.biz)
@Controller:MVC中的C,只用于控制层,做web项目中使用这个注解做控制器(xxx.controller,xxx.action)
注意:需要有无参构造函数
在spring官网查看()
<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">
spring注解自动扫描功能
1、在xml文件中添加<context:component-scan base-package="com.py4g.test.spbean">
</context:component-scan>
2、在类文件上方加入注解(类中必须有构造方法)
当需要向bean中自动注入值
1、在xml文件中添加
<context:property-override location="classpath:override.properties"/>,properties的名字可以任意起
classpath在SRC下
2、增加properties文件,propeties文件需要注意路径,如果直接用classpath,在src下(eclipse编辑器)
3、properties文件中,增加key=value数据,key是对象名和参数名,value是需要赋予的值,
例如:student.stuName=张三 (默认对象名是小写的,默认对象名.属性)
@Autowired:它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作,(就是自动注入对象)
get和set方法就不是必须的,可以直接对私有属性进行操作(java反射机制完成的功能)
@Autowired的使用:
1、根据需要,把需要装配进来的bean,用@component设置 @Component (value="a")//相当于设置了这个组件的id
2、可以再set方法或者直接在属性上方,用@Autowired指定,程序会自动装配属性。(自动注入)
调用时候 可以有两种方法:例如
Clazz cla=(Clazz) context.getBean("a");//id注入(前提是在类里面有 @Component (value="a"))
Clazz cla=(Clazz) context.getBean("clazz");默认对象名注入
@Required
需要确保特定属性已经设置但不是所有属性,则使用@Required进行检查
使用方法:
1、在spring配置文件中增加一行<context:annotation-config />启用检查效果
2、在set方法上加@Required进行检查
@Qualifier注解可以限定@Autowired注解到按类型以及名称注入bean
用法:
当使用@Autowired注解的时候,本身是按照类型装配到spring bean中,但是如果需要按照名称进行装配的时候,则配合@Qualifier(@Qualifier(value="dotNetStudent"))注解使用
@Resource默认按照名称方式进行bean匹配
@Resource的使用方法
1、根据需要,把需要装配的bean,按照名字默认注入
2、如果名字或者类的结构有冲突部分,可以使用@Resource(name = "manImpl")这样的方式指定使用哪个类来进行标注