[Spring] Spring注解简化开发
✨✨个人主页:沫洺的主页
📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏
📖MyBatis专栏
💖💖如果文章对你有所帮助请留下三连✨✨
🥏初始环境搭建
🎈applicationContext.xml配置bean
🎈获取bean
🥏注解开发bean定义
🎫使用@Component定义bean,代替xml配置bean
@Component("bookDao") public class BookDaoImpl implements BookDao { } @Component public class BookServiceImpl implements BookService { }
🎫核心配置文件中通过组件扫描加载bean
<context:component-scan base-package="com.moming"/>
🎫Spring提供@Component注解的三个衍生注解(作用是一模一样,只是起到见名知意的意思)
- 🎈@Controller:用于表现层bean定义
- 🎈@Service:用于业务层bean定义
- 🎈@Repository:用于数据层bean定义
@Repository("bookDao") public class BookDaoImpl implements BookDao { } @Service public class BookServiceImpl implements BookService { }
纯注解开发
🎫Spring3.0升级了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道
🎈@Configuration//注解用于设定当前类为配置类
@Configuration
🎈代替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>
🎈@ComponentScan("com.moming")//注解用于设定扫描路径,
🎈代替xml设定扫描路径
<context:component-scan base-package="com.moming"/>
🎈此注解只能添加一次,多个数据使用数组,如
@ComponentScan({"com.moming.service","com.moming.dao"})
注意
- 🎈加载XML配置文件初始化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
- 🎈加载配置类初始化容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
🥏bean管理
🎫bean作用范围(单例,多例),单例(容器只创建一次),多例(每调用一次就创建一次)
🎈使用@Scope定义bean作用范围
🎫bean生命周期
🎈使用@PostConstruct、@PreDestroy定义bean生命周期
🥏依赖注入
🎫自动装配@Autowired,按照类型装配,底层使用反射里的暴力反射
🎫注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
🎫注意:自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法
🎫如果有两个相同类型的实现类,那么单单使用@Autowired去按照类型装配就会报错如下图所示
所以就要使用按照名称进行装配
🎫使用@Qualifier注解开启指定名称装配bean
🎫注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
🎫使用@Value实现简单类型注入
🎫使用@PropertySource注解加载properties文件
🎫注意:路径仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符*
🥏第三方bean管理
🎫第三方bean管理
🎫将独立的配置类加入核心配置
🎈方式一:导入式(推荐使用)
🎈使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数组格式
🎈方式二:扫描式
🎈使用@ComponentScan注解扫描配置类所在的包,加载对应的配置类信息
🎫第三方bean依赖注入
🎈简单类型依赖注入
🎈引入类型依赖注入
@Bean public DataSource dataSource(BookDao bookDao){ System.out.println(bookDao); DruidDataSource ds = new DruidDataSource(); //属性设置 return ds; }
🎈引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象
🥏注解开发总结
🎫XML配置与注解配置比较