1 ,创建对象的注解:
1: @Component注解:相当于
- (1):位置:必须放在类上面
- (2):属性:value: 给对象起一个别名,相当于bean的id属性 value有默认值,不写的情况下以类的名称作为对象的别名,例如 User,它的别名是 user
@Controller: 创建对象加入容器。同@Component一样。一般用于表现层的注解。
@Service: 创建对象加入容器。同@Component一样。一般用于业务层的注解。
@Repository:创建对象加入容器。同@Component一样。 一般用于持久层的注解。
2:基于注解的 IOC 配置-注入数据:@Autowire, @Qualifier,@Resoure,@value
@Autowired修饰字段和方法
自动装配!!!! - - 到IOC容器去自动查询对象
- 作用: 注入数据。
- @Autowired如何注入?
(1). 根据类型注入
会根据注入的字段的类型,去容器找该类型对应的对象注入
(2). 根据名称注入
如果字段的类型,在容器中对应的对象有多个,会根据字段的名称去注入。
@Autowired 用在字段(属性)上面
3.前提:
使用@Autowired的前提是:属性所在的类也必须在IOC容器中 ,例如在类上面添加@Component
4.位置:
使用的位置非常广,包括在类,构造方法,普通方法,字段,参数等
常用的位置: 字段 和 普通方法
5.注入的类型:
@Autowired必须注入的对象类型(不能是基本类型: int,double),且该对象是引用IOC容器的另一个对象 (相当于配置的ref属性)
6. 注入的方式
6.1 默认情况下,按照字段的类型进行注入 ( 如果IOC容器有多个类型,可能会报错:NoUniqueBeanDefinitionException: No qualifying bean of type ‘java.lang.String’ available: expected single matching bean but found 2: str,str2 )
6.2 在多个类型的情况下,不能是按照进行注入,按照字段的名称进行注入(字段的名称和bean的id要一致的!)
@Autowired用在方法的作用
1.1 执行该方法(该方法名称没有任何要求的)
1.2 @Autowired到IOC容器查询对象,注入给方法的参数
2. 给参数赋值按照什么方式?
2.1 按照类型注入(如果有多个对象,可能报错)
2.2 多个对象的情况下,按照参数的名称赋值
@Qualifier注解说明
- 如果要让@Autowired只根据指定的对象(别名)名称实现依赖注入,要配置@Qualifier注解
- @Qualifier 通常要配合@Autowired一起使用。(在纯注解开发中可以单独使用
@Qualifier 注解的使用
1.位置
和@Autowired一起使用,在@Autowired上面或下面
2.作用
限定了@Autowired只能按照名称来进行注入,该名称值的是@Qualifier指定的名称,例如: @Qualifier(value = “str”)
3.好处
在使用@Autowired的时候,在IOC容器找到多个类型对象的情况下,不想修改字段名称,
可以使用 @Qualifier(value = “str”)指定IOC容器对象的名称
@Resource注解说明
- @Resource注解同@Autowired,可以根据类型、名称注入
- @Resource注解本身不属于Spring的注解,属于JDK提供的注解
- 此注解不建议用,因为在jdk1.8以后版本不提供支持。
@Value注解说明
- 直接给简单类型的字段赋值(相当于property的value属性)
- 获取配置文件值。 (在纯注解开发时候使用)
1.注入的类型
只能是简单类型
2. 作用
2.1 直接给属性赋一个基本类型值
2.2 读取properties配置信息(非常有用)
1)建立jdbc.properties
2)在bean.xml 加载配置: <context:property-placeholder location=“classpath:jdbc.properties”></context:property-placeholder>
3)在类中读取配置的信息
###spring纯注解配置-----@Configuration@ComponentScan@Bean、@PropertySource、@Import
注解说明
@Configuration 用于指定当前类是一个 spring 配置类,当创建容器时会从该类上加载注解。 获取容器时需要使用AnnotationApplicationContext(有@Configuration 注解的类.class)。
@ComponentScan用于指定 spring 在初始化容器时要扫描的包。
作用和在 spring 的 xml 配置文件中的:<context:component-scan base-package=“com.itheima”/>是一样的。
@Bean 该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器
@PropertySource 用于加载.properties 配置文件
@Import用于导入其他配置类
此博客仅供参考!