目录
1.@Component("bookDao")内的BookDao相当于Id
2.若注解以这个形式@Component的话,则就以文件类型作为id(没有括号也没有括号内的配置信息)
1.Spring提供了@Component注解的三个衍生注解(功能一样,便于理解)
2.读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象
注解开发定义Bean
一.使用Component定义bean
1.@Component("bookDao")内的BookDao相当于Id
package com.itheima.dao.impl;
import com.itheima.dao.BookDao;
import org.springframework.stereotype.Component;
@Component("bookDao")
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("bookDao save ...");
}
}
2.若注解以这个形式@Component的话,则就以文件类型作为id(没有括号也没有括号内的配置信息)
package com.itheima.service.impl;
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.stereotype.Component;
@Component
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public BookServiceImpl(BookDao bookDao) {
this.bookDao = bookDao;
}
@Override
public void save() {
System.out.println("Service save...");
}
}
3.main方法实现的写法(有ID,无ID)
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 AppForLifeCycle {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
BookService bookService = (BookService) ctx.getBean(BookService.class);
System.out.println(bookService);
System.out.println(bookDao);
}
}
4.核心配置文件中通过组件扫描加载Bean
<?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 https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.itheima"/>
</beans>
二.衍生注解
1.Spring提供了@Component注解的三个衍生注解(功能一样,便于理解)
@Controller:用于表现层的bean定义
@Service:用于业务层的bean定义
@Repository:用于数据层的bean定义
@Component:常用于工具类的bean定义
纯注解开发
Spring3.0中升级了纯注解开发模式,使用Java类代替配置文件,开启了Spring快速开发时代
1.Java类代替了Spring核心配置文件的具体内容
1.@Configuration注解用于设定当前类为配置类
2.@ComponentScan("com.itheima")注解用于设定扫描路径,此注解只能添加一个,多个数据请求数组格式(有些bean是不能乱加载的,所以还是详细一些比较好,详细些好)
@ComponentScan({"com.itheima.service","com.itheima.dao"})
2.读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象
package com.itheima;
import com.itheima.config.SpringConfig;
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App2 {
public static void main(String[] args) {
//1.加载配置类
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
//2.获取bean
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
BookService bookService = (BookService) ctx.getBean(BookService.class);
//输出bean
System.out.println(bookDao);
System.out.println(bookService);
}
}