Java架构师之旅(十一)
夜光序言:
风说:我要哭。
于是,就下雨了。
风说 ,我想你了。
于是,满世界的刮起了风。
正文:
IOC和DI区别
IOC:控制反转,把对象的创建交给spring来进行管理
DI:依赖注入~~这个有点帅的,我记得opentcs就涉及~~
向类里面的属性设置值~
关系:依赖注入是不可以单独存在的,需要在IOC基础上进行操作~~
在实际开发中,action调用service,service调用dao
我们:
肯定要加在spring的核心配置文件
//1、夜光:加载配置文件,之后根据配置来创建对象
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
New对象,功能可以实现,效率很低
夜光:可以交给服务器来启动,一启动服务器,代码就运行
实现思想:把加载配置文件和创建对象过程,在服务器启动的时候来完成~~
实现原理:
- servletcontext对象,我们可以用监听器知道
- 监听器,监听什么时候创建
- 具体使用:我说的详细一点(底层的基本原理)
在服务器启动的时候,为每个项目创建一个servletcontext对象
--在servletcontext对象创建时候,使用监听器可以具体到servletcontext对象在什么时候创建
--使用监听器监听到servletcontext对象创建时候
--加载spring配置文件,把配置文件配置对象创建
--把创建出来的对象放到servletcontext域对象里面(setAttribute)
--获取对象时候,到servletcontext域里面得到(getAttribute)
spring的bean管理注解准备
之前的都比较繁琐,我们接下来用一个更加简单的方式
注解的方式:
什么叫注解,我在开发中看到许多前辈都是这样写,一开始看到感觉很帅
(注解可以替代配置文件,但是不可能完全替代配置文件)
Spring注解开发准备:
- 注解创建对象
- 注解注入属性
接下来:创建类,创建方法~~
@Test
public void testUser(){
ApplicationContext context=
new ClassPathXmlApplicationContext("bean1.xml");
/*之前我们是根据的id值,现在可以根据value值*/
User user = (User) context.getBean("user");
System.out.println(user);
user.add();
}
spring的bean管理(注解注入属性)
@Test
public void testUser(){
ApplicationContext context=
new ClassPathXmlApplicationContext("bean2.xml");
/*之前我们是根据的id值,现在可以根据value值*/
GeniusService geniusService = (GeniusService) context.getBean("geniusService");
System.out.println(geniusService);
geniusService.add();
}