网站建设需要多少,深圳易捷网站建设,秦皇岛建设网站,深圳市9号令1 简介官网#xff1a;https://spring.io/projects#xff0c;Spring发展到今天已经形成了一种开发生态圈#xff0c;Spring提供了若干个项目#xff0c;每个项目用于完成特定的功能。Spring Framework是最底层的框架#xff0c;是其他项目的根基。Spring Boot Spring MVC…1 简介官网https://spring.io/projectsSpring发展到今天已经形成了一种开发生态圈Spring提供了若干个项目每个项目用于完成特定的功能。Spring Framework是最底层的框架是其他项目的根基。Spring Boot Spring MVCSpring Cloud Spring Framework系统架构图Core Container核心容器用来管理对象BeansAOP面向切面编程依赖于Core Container实现。Aspects实现了AOP思想。Data Access:数据访问Data Integration数据集成支持JDBC、MyBatisWeb:Web开发Test:单元测试 2 IOC/DI2.1 核心概念 使用对象时由主动new对象转换为由外部提供对象对象的创建控制权由程序内部转移到外部这种思想就是控制反转IOCInversion of Control可以降低代码耦合度这里说的外部就是Spring容器由Spring容器创建控制对象Spring容器创建、管理的对象统称为bean。在IOC容器内将有依赖关系的bean进行关系绑定DI。2.2 IOC入门导入spring-context坐标dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.10.RELEASE/version
/dependency定义spring管理的类接口创建applicationContext.xml 并配置对应类作为spring管理的bean?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean classdao.impl.BookDaoImpl idbookDao/bean idbookService classservice.impl.BookServiceImpl/
/beans初始化IOC容器通过容器获取bean public static void main(String[] args) {//获取IOC容器ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);//获取Bean对象//BookDao bookDao (BookDao) applicationContext.getBean(bookDao);BookService bookService (BookService) applicationContext.getBean(bookService);}2.3 DI入门删除使用new方式创建对象的代码提供依赖对象对应的setter方法供IOC容器设置值public class BookServiceImpl implements BookService {private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao bookDao;}Overridepublic void save() {System.out.println(book service save);bookDao.save();}
}public class BookDaoImpl implements BookDao {Overridepublic void save() {System.out.println(book dao save);}
}在配置文件中配置service和dao的依赖关系?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean classdao.impl.BookDaoImpl idbookDao/bean idbookService classservice.impl.BookServiceImpl!-- property标签表示配置当前bean的属性name表示配置哪一个具体的属性ref表示参照哪一个bean--property namebookDao refbookDao//bean
/beans2.3 bean基础配置2.3.1 id和class2.3.2 name别名配置Bean可以起多个名称通过name属性可配置多个别名。2.3.3 scope作用范围控制容器造的对象是单例还是非单例的。Spring默认创建的bean是单例的通过scope属性控制bean是单例方式创建还是非单例方式创建。2.4 bean实例化方式2.4.1 无参构造方法实例化使用无参构造方法实例化bean最常用2.4.2 静态工厂实例化beanpublic class OrderDaoFactory {public static OrderDao getOrderDao() {return new OrderDaoImpl();}
}public class OrderDaoImpl implements OrderDao {Overridepublic void save() {System.out.println(OrderDaoImpl save);}
}bean idorderDao classfactory.OrderDaoFactory factory-methodgetOrderDao/了解即可。2.4.3 实例工厂与factory-beanpublic class UserDaoFactory {public UserDao getUserDao() {return new UserDao();}
}public class UserDao {public void save() {System.out.println(UserDao save);}
}bean iduserFactory classfactory.UserDaoFactory/
bean iduserDao factory-beanuserFactory factory-methodgetUserDao/了解即可。2.4.4 FactoryBean实例化beanpublic class UserDaoFactoryBean implements FactoryBeanUserDao {/*** 创建对象的方法用来得到bean实例* return* throws Exception*/Overridepublic UserDao getObject() throws Exception {return new UserDao();}/*** 用来得到bean类型* return*/Overridepublic Class? getObjectType() {return UserDao.class;}/*** 控制创建的是否是单例对象不复写的话默认是单例* return*/Overridepublic boolean isSingleton() {return FactoryBean.super.isSingleton();}
}public class UserDao {public void save() {System.out.println(UserDao save);}
}applicationContext.xml中配置bean iduserDao classfactory.UserDaoFactoryBean/调用 //获取IOC容器ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);//获取Bean对象UserDao userDao (UserDao) applicationContext.getBean(userDao);userDao.save();重点掌握2.5 bean的生命周期2.5.1 init-method、destroy-methodpublic class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println(book dao is running);}//对象创建后的初始化操作public void init() {System.out.println(init);}Overridepublic void save() {System.out.println(book dao save);}//容器关闭前实例销毁操作public void destroy() {System.out.println(destroy);}
}
bean classdao.impl.BookDaoImpl idbookDao init-methodinit destroy-methoddestroy/调用 //获取IOC容器ClassPathXmlApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);//获取Bean对象BookDao bookDao (BookDao) applicationContext.getBean(bookDao);applicationContext.registerShutdownHook();//注册关闭钩子bookDao.save();applicationContext.close();2.5.2 InitializingBean、DisposableBeanpublic class BookServiceImpl implements BookService , InitializingBean, DisposableBean {private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao bookDao;}Overridepublic void save() {System.out.println(book service save);bookDao.save();}Overridepublic void destroy() throws Exception {}//setter方法先被调用afterPropertiesSet后被调用。constructor-setter-afterPropertiesSet-业务方法-destroyOverridepublic void afterPropertiesSet() throws Exception {}了解即可。