spring依赖注入

一、构造器注入:必须要有一个有参的构造器

    <bean id="zgq" class="com.anhua.dao.UserDaoImpl" />
    <bean id="zzz" class="com.anhua.service.UserServiceImpl">
        <constructor-arg index="0" ref="zgq"/>
    </bean>

二、set注入:一个无参构造器和set()方法

   <bean id="s3" class="com.anhua.dao.UserDaoMysqlImpl"/>
    <bean id="u2" class="com.anhua.service.UserServiceImpl">
        <property name="userDao" ref="s3"></property>
    </bean>

***三、装配方式:

手动装配:***

  <bean id="userDaoImlp" class="com.anhua.dao.UserDaoImpl"/>
    <bean id="userDaoMysql" class="com.anhua.dao.UserDaoMysqlImpl"/>
    <bean id="ii" class="com.anhua.service.UserServiceAll" ">
<property name="userDaoImlp" ref="userDaoImlp"/>
<property name="userDaoMysql" ref="userDaoMysql"/>
    </bean>

自动装配

1通过byName装配

条件:bean的id必须和自己对应的set()方法后面的值对应 ****2通过byType装配****
<bean id="userDaoImlp" class="com.anhua.dao.UserDaoImpl"/>
<bean id="userDaoMysql" class="com.anhua.dao.UserDaoMysqlImpl"/>
<bean id="ii" class="com.anhua.service.UserServiceAll" autowire="byName">
</bean>

条件:bean中的class类型必须只有一种(类型全局唯一)。

注解自动装配

注意:要配置注解扫描,注解才会生效,和扫描包
1,@Autowired 可以在属性上使用,也可以在set()方法上使用
注意:@Autowrite可以不用set但是自动装配的属性必须在ioc中,且与byName符合。或者可以使用 @Qualifier(“cat11”)指定一个bean
2,@Resource注解是想查byName找不到在找byType(java原生的注解)
3、赋值方式: 在属性的上面添加 @Value(“杨安华======”)等价在xml的bean中添加值

四注解开发

注意:要配置注解扫描,注解才会生效,和扫描包

<context:component-scan base-package="com.anhua.dao"/>
    <mvc:annotation-driven />

在需要装配的类的上面写@Component等于默认的bean就是该类的小写。
@Component与@Service(Service层)和@Repository(Dao层)和@Controller(Controller层)一样的都代表组件,都是将某个类注册到spring的IOC中进行装配


五、完全使用javaConfig实现配置


被托管的类:

@Component//放到IOC中
public class Stu {
    @Value("我是杨安华Stu========")
    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Stu{" +
                "name='" + name + '\'' +
                '}';
    }
}

配置类:

@Configuration//当做beans.xml
@ComponentScan("com.anhua.dao")//扫描包
public class JavaConfige {
    @Bean//相当bean
    public Stu getStu(){
        return new Stu();
    }
    @Bean//相当bean
    public Dog getDog(){
        return new Dog();
    }
}

测试类:

    public  void test6() {
        ApplicationContext context=new AnnotationConfigApplicationContext(JavaConfige.class);
        //通过
       Stu stu= context.getBean("getStu",Stu.class);
//        Dog dog=context.getBean("getDog",Dog.class);
//        dog.show();
        System.out.println(stu.getName());

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值