一、注解方式实现IOC(就是将创建对象的权利和对象的生命周期交给Spring容器,可以用另一种方式创建对象)
实际上就是创建对象
1.需要导入4个核心包,一个日志包和一个扫描包
2.创建applicationContext.xml,开启包扫描
<!-- 开启包扫描-->
<context:component-scan base-package="com.shangma.cn.entity"></context:component-scan>
- 如果扫描到该类被component注释,则加载到Spring容器,也就是在Spring容器中new出了对象(利用反射)
//获取字节码文件对象
Class<?> aClass = Class.forName("com.shengqi.entity.Person");
//通过无参构造获取对象
Person person = (Person) aClass.newInstance();
map.put(id,person)
3.在希望被spring管理的类上面添加注解@Component
@Component("abc")指定ID
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserController userController = (UserController) context.getBean("abc");
注意点:通常情况注解注册的bean使用类名首字母小写为bean的id(Person --> id是person)
但是如果类名的第二个字母是大写,首字母保留原样(NBA类 -->id还是NBA)
延伸注解:
@component 普通类 下面三种其实也就是component
@Controller controller层的类
@Service service层的类
@Repository dao层的类
二、注解方式实现DI(也就是属性值注入)
1.内置类型的注入
1.1 基础类型
1.直接注入
@Value