spring的自动装配(注解实现)

使用注解前的准备:

1.导入约束

2.配置注解的支持:contexnt:annotation-config/

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:contexnt="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-2.5.xsd">
   <contexnt:annotation-config/>
 </beans>

@Autowired:zu直接上属性上面使用

​ 使用该注解后可以省略set方法,但是自动装配的属性在IOC容器中要存在,而已名字也要向对应

​ Autowired的属性required默认为true:说明在注入的时候这个对象必须存在,否则就会报错

​ 当设置为false时:有值的情况就正常注入,如果对象不存在时(注入为空值),就会跳过也不会报错

如果bean标签里面出现了多个类型相同但是名字不同的情况,如下

 	<bean id="dog1" class="pojo.Dog"/>
    <bean id="dog2" class="pojo.Dog"/>
    <bean id="cat2" class="pojo.Cat"/>
    <bean id="cat1" class="pojo.Cat"/>

此时光光是一个Autowired注解是无法实现自动装配的,所以就要引用Qualifier来实现指定id名字来进行装配,如下

    @Autowired
    @Qualifier(value = "cat1")
    private Cat cat;
    @Autowired
    @Qualifier(value = "dog1")
    private Dog dog;

@Component:组件,放在类的上面,说明了这个类被spring管理了,也就是以前xml文件中bean标签里面的内容

@Value:相当对bean里面的属性赋值(可以放在属性的上面,也可以放在这个属性的set方法上面)

web开发的三层架构来分层

​ @component

  1. dao:@Repository
  2. service:@service
  3. controller:@Controller

以上四个注解的功能相同,都是把这个来放到spring中注册,并装配成bean,只是使用的位置不同

总结:

xml和注解:

​ xml的实用性更强,更加灵活,维护方便了些

​ 注解实在类上面进行操作,使用起来简单,但是不是自己的类就无法使用了,维护复杂

xml:管理bean

注解:负责属性的注入(要让支持注解:开启注解的驱动支持,扫描指定的包让其注解生效)

完全使用Java来使用spring(07)

摒弃xml配置,只使用java来配置(JavaConfig)——注解实现(结构模式和xml配置相同)

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@ComponentScan("hui.pojo")
@Import(MyConfig2.class)
public class MyConfig {
    @Bean
    public User user(){
        return new User();
    }
}

@Configuration:放在一个类的上面,并被spring进行接管,并注册到容器中

@Import:代表几个config.java配合使用

@ComponentScan:表示扫描路径下的包,并进行自动装配到spring的bean容器中

@bean:放在方法的上面,相当于xml文件中的bean标签

​ 方法的名字相当于bean标签的id属性

​ 方法的返回值相当于注入bean的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值