一、构造器注入:必须要有一个有参的构造器
<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());
}