Spring學習筆記-配置檔案
阿新 • • 發佈:2022-04-04
Spring入門
1.匯入座標(pom.xml)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.15</version>
</dependency>
2.建立介面類
package org.example.dao; public interface UserDao { void save(); }
3.介面實現
package org.example.Impl;
import org.example.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("savr runing...");
}
}
4.建立applicationContext.xml(resouces檔案下)配置Bean
<bean id="userDao" class="org.example.Impl.UserDaoImpl"></bean>
5.建立applicationContext物件getBean
public class SpringTest {
@Test
public void test1(){
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) app.getBean("userDao");
userDao.save();
}
}
Spring配置檔案
Bean標籤基本配置
基本屬性
- id:Bean例項在Spring容器中的唯一標識
- class:Bean的全限定名稱
- scope:物件作用範圍,取值如下:
-
single:預設值,單例的,當Spring核心被載入時,例項化配置的Bean例項
-
prototype:多例的,當呼叫getBean()方法時例項化Bean
-
request:WEB專案中,Spring建立一個Bean物件,將物件存到request域中
-
session:WEB專案中,Spring建立一個Bean物件,將物件存到session域中
-
global session:WEB專案中,應用在portlet中,如果沒有portlet環境,那麼global Session相當於session
Bean生命週期配置
-
init-method:指定類中的初始化方法名稱
-
destroy-method:指定類中銷燬方法名稱
<bean id="userDao" class="org.example.Impl.UserDaoImpl" scope="singleton" init-method="init" destroy-method="destory"></bean>
public class UserDaoImpl implements UserDao {
public UserDaoImpl() {
System.out.println("物件建立...");
}
@Override
public void save() {
System.out.println("savr runing...");
}
public void init(){
System.out.println("初始化方法....");
}
public void destory(){
System.out.println("銷燬方法....");
}
}
Bean例項化的三種方式
無參構造方法例項化
<bean id="userDao" class="org.example.Impl.UserDaoImpl"></bean>
public class UserDaoImpl implements UserDao {
public UserDaoImpl() {}
}
工廠靜態方法例項化
<bean id="userDao" class="org.example.factory.StaticFactory" factory-method="getUserDao"></bean>
public class StaticFactory {
public static UserDao getUserDao(){
return new UserDaoImpl();
}
}
工廠例項方法例項化
<bean id="factory" class="org.example.factory.DynameicFactory" ></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>
public class DynameicFactory {
public UserDao getUserDao(){
return new UserDaoImpl();
}
}
物件引用依賴注入方式
構造方法
<bean id="userDao" class="org.example.Impl.UserDaoImpl"></bean>
<bean id="UserService" class="org.example.Impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
public class UserServiceImpl implements UserService {
private UserDao userDao;
//構造方法注入
public UserServiceImpl(UserDao userDao){
this.userDao = userDao;
}
}
set()方法
<bean id="userDao" class="org.example.Impl.UserDaoImpl"></bean>
<bean id="UserService" class="org.example.Impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
<!--name:注入Bean的id,ref:呼叫方法(setUserDao),去set首字母小寫-->
</bean>
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
p名稱空間注入(本質set()方法注入,更方便)
<beans xmlns:p="http://www.springframework.org/schema/p">
<!--引入p名稱空間-->
<bean id="userDao" class="org.example.Impl.UserDaoImpl"></bean>
<bean id="UserService" class="org.example.Impl.UserServiceImpl" p:userDao-ref="userDao"></bean>
依賴注入資料型別
普通資料型別
<bean id="userDao" class="org.example.Impl.UserDaoImpl">
<property name="username" value="zhangsan"></property>
<property name="age" value="18"></property>
</bean>
public class UserDaoImpl implements UserDao {
private String username;
private Integer age;
public void setUsername(String username) {
this.username = username;
}
public void setAge(Integer age) {
this.age = age;
}
}
集合資料型別
<bean name="user1" class="org.example.domain.User">
<property name="name" value="Tom"></property>
<property name="addr" value="sh"></property>
</bean>
<bean name="user2" class="org.example.domain.User">
<property name="name" value="Sum"></property>
<property name="addr" value="bj"></property>
</bean>
<bean id="userDao" class="org.example.Impl.UserDaoImpl">
<property name="strList">
<list>
<value>aaa</value>
<value>abb</value>
<value>abc</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="u1" value-ref="user1"></entry>
<entry key="u2" value-ref="user2"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="p1">111</prop>
<prop key="p2">122</prop>
<prop key="p3">123</prop>
</props>
</property>
<property name="age" value="18"></property>
</bean>
public class UserDaoImpl implements UserDao {
private List<String> strList;
private Map<String, User> userMap;
private Properties properties;
public void setStrList(List<String> strList) {
this.strList = strList;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
}
Spring配置檔案
<import resource="applicationContext-***.xml"/>