这是学习黑马程序SSM的课程笔记,这小节主要是注解的介绍
原视频地址:https://www.bilibili.com/video/BV1Fi4y1S7ix
数据源对象管理
加载properties文件
容器
创建容器
在Spring框架中,你可以使用不同的方式来创建一个Spring容器(ApplicationContext)。下面是两种常见的创建Spring容器的方式:
使用ClassPathXmlApplicationContext:
使用XML配置文件来创建Spring容器是最常见的方式之一。通常,你会在项目中创建一个XML配置文件,其中包含了Bean的定义和配置信息,然后通过ClassPathXmlApplicationContext
类来加载和创建Spring容器。以下是一个简单的示例:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
// 加载Spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
// 使用Spring容器中的Bean
MyBean myBean = (MyBean) context.getBean("myBean");
myBean.doSomething();
// 关闭Spring容器(可选)
((ClassPathXmlApplicationContext) context).close();
}
}
在上述示例中,我们使用了ClassPathXmlApplicationContext
类,它从classpath中加载名为spring-config.xml
的配置文件,然后创建了Spring容器。接下来,我们使用容器来获取和使用名为myBean
的Bean。
-
使用AnnotationConfigApplicationContext:
如果你更喜欢使用基于注解的配置而不是XML配置文件,你可以使用
AnnotationConfigApplicationContext
类来创建Spring容器。在这种方式下,你需要在Java配置类中使用注解来定义Bean,然后通过AnnotationConfigApplicationContext
类来加载这些配置类。以下是一个示例:import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class MainApp { public static void main(String[] args) { // 加载Java配置类 ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); // 使用Spring容器中的Bean MyBean myBean = (MyBean) context.getBean("myBean"); myBean.doSomething(); // 关闭Spring容器(可选) ((AnnotationConfigApplicationContext) context).close(); } }
在上述示例中,我们使用了
AnnotationConfigApplicationContext
类,通过AppConfig
类中的注解配置来创建Spring容器。
不论使用哪种方式,一旦创建了Spring容器,你就可以使用容器来获取和管理Bean,并让Spring来处理依赖注入、生命周期管理等任务。在程序结束时,通常可以选择关闭Spring容器来释放资源,尤其是在长期运行的应用程序中。
获取Bean
容器类层次结构图
BeanFactory
核心容器总结
注解开发
@Component
是Spring框架中的一个基本注解,用于表示一个类是Spring容器中的一个组件(Bean)。@Component
可以被用于任何普通的Java类,并告诉Spring将这个类实例化为一个Bean,并由Spring容器来管理其生命周期。
除了@Component
注解,Spring还提供了三个衍生注解,它们分别是:@Repository
、@Service
、@Controller
。这些衍生注解是基于@Component
注解的,并且具有相同的效果,但它们用于更具体的类别,以提高代码的可读性和可维护性。
-
@Repository:用于标记数据访问层(DAO,Data Access Object)的类。通常用于与数据库交互的持久层组件,它告诉Spring这个类负责数据库操作,可以处理数据库异常,并将它实例化为一个Bean。当Spring的组件扫描功能启用时,它会自动扫描并注册带有
@Repository
注解的类。import org.springframework.stereotype.Repository; @Repository public class UserRepository { // 数据访问逻辑 }
-
@Service:用于标记业务逻辑层(Service)的类。通常用于封装应用程序的业务逻辑,它告诉Spring这个类是一个业务服务组件。当Spring的组件扫描功能启用时,它会自动扫描并注册带有
@Service
注解的类。import org.springframework.stereotype.Service; @Service public class UserService { // 业务逻辑 }
-
@Controller:用于标记控制器层(Controller)的类。通常用于处理Web请求和控制应用程序的流程,它告诉Spring这个类是一个Web控制器组件。当Spring的组件扫描功能启用时,它会自动扫描并注册带有
@Controller
注解的类。import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class MyController { @GetMapping("/hello") public String sayHello() { // 处理请求并返回视图 return "hello"; } }
总结:
@Component
是通用的注解,可以用于任何类。@Repository
用于数据访问层(DAO)。@Service
用于业务逻辑层(Service)。@Controller
用于控制器层(Controller)。
这些注解可以帮助Spring更好地组织和管理不同层次的组件,并支持更具有表现力的代码。当Spring容器启动时,它会自动识别和注册这些带有注解的组件。
纯注解开发
注解开发bean作用范围与生命周期
注解开发依赖注入
注解开发管理第三方Bean
为第三方Bean注入资源
XML配置对比注解
Spring 整合MyBatis
整合思路