导入jar包,引入约束
<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">扫描类、方法、属性上面的注解
<!--开启注解扫描--> <context:component-scan base-package="annotation"></context:component-scan>如果有多个包,可以导入多个
<!--开启注解扫描--> <context:component-scan base-package="annotation,XmlTest"></context:component-scan>或者直接写包前缀
<!--开启注解扫描--> <context:component-scan base-package="com.alibaba"></context:component-scan>在类的上面添加注解:
@Component(value = "user") //等价于<bean id="user" class="User"></bean> public class User { public void add() { System.out.println("add........"); } }注解方式测试:
@Test public void testUser() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); User user = (User) context.getBean("user"); System.out.println(user); user.add(); }创建对象有四个注解: 这四个注解的功能是一样的,都用来创建对象 在配置文件中仍然只有一行
默认为单例模式: 如果想要创建多实例:
@Component(value = "user") //等价于<bean id="user" class="User"></bean> @Scope(value = "prototype") //默认单实例,创建多实例 public class User { public void add() { System.out.println("add........"); } }配置文件的写法:
<bean id="dao" class="ioc.UserDao"></bean> <bean id="service" class="ioc.UserService"> <!--不要写value,因为不是字符串,写bean标签中id的值--> <property name="userDao" ref="dao"></property> </bean>现在不需要这么麻烦了。
仍然是首先创建Bean对象。value属性值可以省略
import org.springframework.stereotype.Component; @Component("service") public class UserService { public void add() { System.out.println("UserService......"); } } @Component(value = "dao") public class UserDao { public void add() { System.out.println("UserDao....."); } }在Service里面定义Dao属性,使用注解方式不需要set方法,在dao属性上面使用注解,完成对象注入
@Component("service") public class UserService { //@Autowired自动注入 @Autowired UserDao userDao; public void add() { userDao.add(); System.out.println("UserService......"); } }跟bean的id无关,自动装备是根据UserDao这个类型类进行寻找的
