spring 01 入門案例
spring 六大模組
spring core:核心功能
spring aop:面向切面程式設計
spring web:對web開發的支援
spring jdbc:對jdbc操作的支援
spring orm:對hibernate提供支援
spring jee:對javaee其他模組的支援
案例
1. 引入jar包
spring-core.jar
spring-context.jar
spring-expression.jar
spirng-bean.jar
commons-logging.jar
2. 在src下編寫beam.xml(也叫applicationContext.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.xxjqr.spring01.first_demo.UserDao"></bean>
<bean id="userService" class="com.xxjqr.spring01.first_demo.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userAction" class="com.xxjqr.spring01.first_demo.UserAction" init-method="init_" destroy-method="destroy_" scope="singleton">
<property name="userService" ref="userService"></property>
</bean>
</beans>
3. 類
public class UserDao {
public void save(){
System.out.println("已經完成save");
}
}
@Data //生成setter getter toString......方法
public class UserService {
private UserDao userDao;//屬性一定要有setter 方法才能被注入哦
public void save(){
userDao.save();
}
}
@Data
public class UserAction {
private UserService userService;
public void save(){
userService.save();
}
public void init_(){
System.out.println("初始化方法呼叫了");
}
public void destroy_(){
System.out.println("銷燬方法呼叫了");
}
}
測試類
public class App {
//在當前類路徑下去載入bean.xml檔案
private ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml",App.class);
@Test
public void testUserAction() {
//建立容器
UserAction action = (UserAction) ac.getBean("userAction");
action.save();
//ioc視窗銷燬
ClassPathXmlApplicationContext context = (ClassPathXmlApplicationContext)ac;
context.destroy();
}
}
補充:beam.xml細節
細節1:
id 與 name:
id 不能以數字開頭,不能含有特殊符號, 不能有空格、逗號等; id 不能重複!
name 可以以數字開頭,可以有特殊符合,如果name值重複,編譯沒有問題但執行報錯!
<bean id="user" name="user2,user3 user4" class="cn.itcast.a_config.User"></bean>
<bean name="user5" class="cn.itcast.a_config.User"></bean>
<bean id="user6" class="cn.itcast.a_config.User"></bean>
<bean id="user6" class="cn.itcast.a_config.User"></bean>
細節2: (單例/多例)
scope="singleton" 預設表示單例!
prototype 多例
init-method="" 在建立完物件之後執行初始化方法
destroy-method="" 在呼叫容器類的destroy()方法時候,對單例的物件有效!
lazy-init="true" 延遲初始化 / 這個屬性的設定只對單例有影響,對多例沒有任何影響!
單例的物件預設是在建立容器的時候就建立所有單例的物件,如果希望在第一次訪問的時候建立單例的物件,就設定延遲初始化
Bean生命週期:
singleton 單例
1) 建立物件
如果有配置延遲初始化,
lazy-init=true 如果單例的物件有配置延遲初始化, 在建立容器之後,在第一次從容器獲取物件的時候
建立單例的物件!
如果沒有配置或延遲初始化為預設值, 單例的物件會在建立容器的時候建立物件
2) 執行初始化方法 , init-method配置的方法會執行
3) 呼叫容器destroy() 方法時候,容器在銷燬單例物件的例項的時候,會呼叫destroy-method對應的方法
此時bean物件會被銷燬!
prototype 多例
1) 每次在從容器獲取物件的時候,都會建立新的物件
2) 每次建立完物件後,就執行初始化方法
3) java回回收不用資源(jvm gc)
相關文章
- Spring Cloud Gateway 入門案例SpringCloudGateway
- Spring Boot 整合 Spring Security 入門案例教程Spring Boot
- 01-Spring Security框架學習--入門(二)Spring框架
- Spring Boot GraphQL 實戰 01_快速入門Spring Boot
- Spring Boot -01- 快速入門篇(圖文教程)Spring Boot
- java bean 物件屬性複製框架BeanMapping-01-入門案例JavaBean物件框架APP
- 01_RTOS入門
- 01 | Bootstrap使用入門boot
- 01_spark入門Spark
- 01. vim入門
- Servlet-01-入門Servlet
- Spring Cloud Alibaba - Sentinel入門案例(四)(熱點規則 )SpringCloud
- kafka入門案例Kafka
- vuex入門案例Vue
- Python入門(案例)Python
- RabbitMQ入門案例MQ
- Spring 入門Spring
- day01-Redis入門Redis
- 【Linux】運維入門 -01Linux運維
- 前端-vue入門案例前端Vue
- FineBI入門案例分析
- jQuery入門(四)案例jQuery
- CSS入門案例:摺扇CSS
- spring入門(二)Spring
- 1、Spring入門Spring
- Spring入門指南Spring
- spring 快速入門Spring
- Spring Boot入門Spring Boot
- webpack 入門之 loader 案例Web
- RabbitMQ 入門案例 - fanout 模式MQ模式
- vue 基礎入門筆記 01Vue筆記
- 機器學習01-入門機器學習
- Spring Security 快速入門Spring
- Spring Security(一)入門Spring
- Spring MVC 入門程式SpringMVC
- Spring Cloud Gateway 入門SpringCloudGateway
- Spring Boot HttpExchange 入門Spring BootHTTP
- #Spring JdbcTemplate入門@FDDLCSpringJDBC
- spring mvc 快速入門SpringMVC