当前位置:实例文章 » JAVA Web实例» [文章]浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解

发布人:shili8 发布时间:2025-02-23 14:14 阅读次数:0

**Spring IOC 和 DI**

###什么是IOC和DI?

在软件开发中,依赖性注入(Dependency Injection, DI)和控制反转(Inversion of Control, IOC)是两个相关但不同的概念。

* **控制反转(IOC)**: IOC是一种设计模式,它将对象之间的依赖关系进行抽象,使得程序员不再需要直接实例化对象,而是通过容器来管理对象的生命周期。这使得代码更易于维护和测试。
* **依赖性注入(DI)**: DI是IOC的一种实现方式,它将依赖关系从编程中抽象出来,通过配置文件或其他机制来提供依赖关系。

### Spring IOC 和 DI 的使用在Spring框架中,IOC和DI是核心概念。下面是一个简单的例子:

java//一个服务类public class UserService {
 private UserDAO userDAO;

 public void setUserDAO(UserDAO userDAO) {
 this.userDAO = userDAO;
 }

 public void saveUser() {
 // 使用userDAO进行操作 }
}

//一个DAO类public class UserDAO {
 public void saveUser() {
 // DAO的具体实现 }
}


在Spring中,我们可以使用XML配置文件来定义Bean之间的依赖关系:

xml<!-- XML配置文件 -->
<bean id="userService" class="com.example.UserService">
 <property name="userDAO" ref="userDAO"/>
</bean>

<bean id="userDAO" class="com.example.UserDAO"/>


在Java代码中,我们可以使用`@Autowired`注解来实现DI:

java//一个服务类@Servicepublic class UserService {
 @Autowired private UserDAO userDAO;

 public void saveUser() {
 // 使用userDAO进行操作 }
}


### Spring 整合 MybatisSpring整合Mybatis是一个常见的使用场景。下面是一个简单的例子:

#### 步骤一:配置Mybatis首先,我们需要在pom.xml中添加Mybatis依赖:

xml<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>2.1.4</version>
</dependency>


然后,我们需要配置Mybatis的XML文件:

xml<!-- mybatis-config.xml -->
<configuration>
 <settings>
 <setting name="cacheEnabled" value="true"/>
 </settings>
 <typeAliases>
 <typeAlias type="com.example.User" alias="User"/>
 </typeAliases>
</configuration>


#### 步骤二:创建Mapper接口然后,我们需要创建Mapper接口:

java// UserMapper.javapublic interface UserMapper {
 List selectUsers();
}


#### 步骤三:配置Spring最后,我们需要在Spring中配置Mybatis:

java// SpringConfig.java@Configurationpublic class SpringConfig {
 @Bean public DataSource dataSource() {
 DruidDataSource dataSource = new DruidDataSource();
 dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
 dataSource.setUrl("jdbc:mysql://localhost:3306/test");
 dataSource.setUsername("root");
 dataSource.setPassword("123456");
 return dataSource;
 }

 @Bean public SqlSessionFactory sqlSessionFactory() throws Exception {
 SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
 bean.setDataSource(dataSource());
 bean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
 return bean.getObject();
 }
}


#### 步骤四:使用Mapper接口最后,我们可以在Spring中使用Mapper接口:

java// UserService.java@Servicepublic class UserService {
 @Autowired private UserMapper userMapper;

 public List selectUsers() {
 return userMapper.selectUsers();
 }
}


### Spring 整合 Mybatis 的十四 个注解下面是Spring整合Mybatis的十四个注解:

1. `@Service`: 表示这是一个服务类。
2. `@Autowired`: 表示这个属性需要通过依赖性注入来获取。
3. `@Repository`: 表示这是一个数据访问层类。
4. `@Mapper`: 表示这是一个Mapper接口。
5. `@Bean`: 表示这是一个Spring Bean。
6. `@Configuration`: 表示这是一个Spring配置类。
7. `@EnableAutoConfiguration`: 表示开启自动配置功能。
8. `@ImportResource`: 表示导入XML配置文件。
9. `@Value`: 表示这个属性需要通过值注入来获取。
10. `@PropertySource`: 表示这是一个属性源类。
11. `@BeanDefinitionRegistryPostProcessor`: 表示这是一个Bean定义注册后处理器。
12. `@Import`: 表示导入其他配置类。
13. `@ConditionalOnClass`: 表示这个类需要在指定的类存在的情况下才会被使用。
14. `@ConditionalOnProperty`: 表示这个类需要在指定的属性存在的情况下才会被使用。

这些注解可以帮助我们更好地组织和管理Spring应用程序中的配置和依赖关系。

相关标签:springjavamybatis后端
其他信息

其他资源

Top