Spring框架SSM之IOC詳解
Spring框架之IOC
1.Spring框架搭建
在pom文件中引入jar包
<properties>
<spring.version>4.0.2.RELEASE</spring.version>
</properties>
<!-- spring框架包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>2.IOC(控制反轉(zhuǎn)/依賴注入)
將程序的控制權(quán)從代碼本身轉(zhuǎn)移到外部容器
組件化的思想:分離關(guān)注點(diǎn),使用接口,不再關(guān)注實(shí)現(xiàn)
依賴的注入:將組件的構(gòu)建和使用分開
2.1在配置文件中進(jìn)行控制反轉(zhuǎn)和依賴注入
dao層
/**
* 顯示信息
*/
public interface UserDao {
public void show() ;
}
public class UserDaoImpl implements UserDao {
@Override
public void show() {
System.out.println("輸出UserDaoImpl信息");
}
}service層
public interface UserService {
/**
* 顯示信息
*/
public void show() ;
}
public class UserServiceImpl implements UserService {
@Setter
private UserDao userDao;
@Override
public void show() {
userDao.show();
}
}在resources文件夾下創(chuàng)建一個(gè)spring.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
</beans>xml配置文件
<!-- 配置userDao bean--> <bean id="userDao" class="com.hz.dao.impl.UserDaoImpl"></bean> <bean id="userService" class="com.hz.service.impl.UserServiceImpl"> <!-- 配置userDao屬性,ref引用userDao bean --> <property name="userDao" ref="userDao"></property> </bean>
讀取配置文件并運(yùn)行
//使用ClassPathXmlApplicationContext讀取配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserService userService =(UserService) context.getBean("userService");
userService.show();2.2使用注解的形式實(shí)現(xiàn)
@Component:實(shí)現(xiàn)Bean組件的定義
@Repository([實(shí)例化名稱]) :用于標(biāo)注DAO類 默認(rèn)使用當(dāng)前類的類名(首字母小寫)作為bean的別名
@Service([實(shí)例化名稱]) :用于標(biāo)注Service業(yè)務(wù)類 默認(rèn)使用當(dāng)前類的類名(首字母小寫)作為bean的別名
@Autowired+@Quali?er(“userDao”)等價(jià)于@Resource(name = “userDao”)
dao層
/**
* 顯示信息
*/
public interface UserDao {
/**
* 刪除學(xué)生
* @param id
*/
public int delStudent(Integer id);
}
@Repository
public class UserDaoImpl implements UserDao {
@Override
public int delStudent(Integer id) {
System.out.println("刪除id為"+id+"的學(xué)生");
return 0;
}
}service層
public interface UserService {
/**
* 刪除學(xué)生
* @param id
*/
public int delStudent(Integer id);
}
@Service
public class UserServiceImpl implements UserService {
//@Resource(name = "userDaoImpl")
@Autowired
//@Qualifier("userDaoImpl")
private UserDao userDao;
@Override
public int delStudent(Integer id) {
userDao.delStudent(id);
return 100;
}
}注:JDK17把@Resource廢除,如果需要使用此注解需導(dǎo)入jar包
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.2</version>
</dependency>在配置文件中開啟注解
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置組件掃描,掃描com.hz.dao和com.hz.service和com.hz.aop包下的類 -->
<context:component-scan base-package="com.hz.dao,com.hz.service"/>
</beans>讀取配置文件
//使用ClassPathXmlApplicationContext讀取配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
//因?yàn)锧Repository默認(rèn)使用當(dāng)前類的簡單類名(首字母小寫)作為bean的別名,所以使用getBean("userServiceImpl")獲取對(duì)象
UserService userService =(UserService) context.getBean("userServiceImpl");
userService.delStudent(1001);2.3@Autowired和@Resource區(qū)別
- Resource 按照名稱依賴注入,如果沒有對(duì)應(yīng)則按照類型注入
- Autowired 按照依賴類型注入
到此這篇關(guān)于SSM--Spring框架之IOC的文章就介紹到這了,更多相關(guān)spring框架ioc內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot項(xiàng)目.gitignore沒生效的解決方案
在 Spring Boot 項(xiàng)目中,.gitignore 文件的作用是告訴 Git 哪些文件或目錄不需要被版本控制,但是我們經(jīng)常會(huì)遇到gitignore失效的問題,所以本文給大家介紹了為什么.gitignore會(huì)失效和解決方案,需要的朋友可以參考下2025-06-06
Java中Integer.valueOf,parsetInt() String.valueOf的區(qū)別和結(jié)果代碼解析
本文通過代碼給大家講解了JAVA中Integer.valueOf, parsetInt() String.valueOf的區(qū)別和結(jié)果,需要的朋友可以參考下2018-05-05
MybatisPlus中如何調(diào)用Oracle存儲(chǔ)過程
這篇文章主要介紹了MybatisPlus中如何調(diào)用Oracle存儲(chǔ)過程的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
JAVA中JSONObject對(duì)象和Map對(duì)象之間的相互轉(zhuǎn)換
這篇文章主要介紹了JAVA中JSONObject對(duì)象和Map對(duì)象之間的相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
利用Java實(shí)現(xiàn)帶GUI的氣泡詩詞特效
這篇文章主要為大家介紹了如何利用Java語言實(shí)現(xiàn)帶GUI的氣泡詩詞特效,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下2022-08-08
Java實(shí)現(xiàn)數(shù)組與String相互轉(zhuǎn)換的常見方法詳解
在Java開發(fā)中,數(shù)組與字符串之間的相互轉(zhuǎn)換是處理數(shù)據(jù)時(shí)的常見需求,本文將詳細(xì)介紹Java中數(shù)組與字符串相互轉(zhuǎn)換的常見方法,大家可以根據(jù)需要進(jìn)行選擇2025-07-07
springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決
這篇文章主要介紹了springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01

