- @Controller:用于表现层bean定义
- @Service:用于业务层bean定义
- @Repository:用于数据层定义
package com.itheima.dao.impl;import com.itheima.dao.BookDao;import org.springframework.stereotype.Component;import org.springframework.stereotype.Controller;import org.springframework.stereotype.Repository;//@Component定义bean//@Component("bookDao")//@Repository:@Component衍生注解@Repository("bookDao")public class BookDaoImpl implements BookDao {public void save() {System.out.println("book dao save ...");}}package com.itheima.service.impl;import com.itheima.dao.BookDao;import com.itheima.service.BookService;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;//@Component定义bean//@Component//@Service:@Component衍生注解@Servicepublic class BookServiceImpl implements BookService {private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}public void save() {System.out.println("book service save ...");bookDao.save();}}但是 , 在上述情况下 , 即使我们将@Component的类定义为bean我们的xml文件是无法探测到的 , 所以我们需要配置相关扫描组件来扫描bean
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- <context:component-scan />:表示扫描文件 base-package:表示扫描路径 --><context:component-scan base-package="com.itheima"/></beans>纯注解开发我们前面所提到的注解开发属于2.5的附属版本在Spring3.0版本 , Spring就提供了纯注解开发模式 , 利用java类代替配置文件 , 开启了Spring快速开发时代
在之前我们的xml配置文件是很繁琐的:
<!--原生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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/></beans>但是我们可以通过创建单独的类来表示配置文件:- @Configuration:用于声明当前类为Spring配置类
- @ComponentScan:用于扫描类文件(类似于<context:component-scan base-package="com.itheima"/>)
package com.itheima.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;//声明当前类为Spring配置类@Configuration//设置bean扫描路径 , 多个路径书写为字符串数组格式@ComponentScan({"com.itheima.service","com.itheima.dao"})public class SpringConfig {}注意:因为该类属于配置类 , 我们通常单列一个文件夹来表示因为我们的开发不再依靠于xml配置文件 , 所以在主函数中的Spring容器获得方式也发生了改变:
常用文件夹:config
命名规范:SpringConfig,UserConfig...
package com.itheima;import com.itheima.dao.BookDao;import com.itheima.service.BookService;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {// 这是我们之前的获取方式 , 采用路径获取xml文件// ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");// 这是新的获取方式 , 直接提供配置类的类型// AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);// 后面操作无需变化BookDao bookDao = (BookDao) ctx.getBean("bookDao");System.out.println(bookDao);//按类型获取beanBookService bookService = ctx.getBean(BookService.class);System.out.println(bookService);}}
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 手机指南针怎么看(指南针怎么看方向)
- 指南针怎么看方向(指南针罗盘)
- 指南针怎么看东南西北(指南针怎么看家里方位)
- 星姿妍彩妆是什么牌子的彩妆?
- 飞甩鸡毛是什么牌子?
- 爱琪梅花是什么电视剧中的人物?
- 晒斑和黄褐斑的区别是什么?
- 父母爱情安泰结局是什么?
- 晒黑了怎么快速变白?
- 飞乔是什么牌子?
