一、注解开发
-
1.1 注解开发定义bean
- 使用
@Component
定义bean@Component("bookDao")
public class BookDaoImpl impl BookDao {
}
@Component()
public class BookServiceImpl impl BookService {
} - 核心配置文件中通过组件扫描加载bean
<context:component-scan base-package="com.itheima"/>
1.1.1 注解衍生
spring提供@Component
注解的三个衍生注解
@Controller
用于表现层bean定义@Service
用于业务层bean定义@Repository
用于数据层bean定义@Repository("bookDao")
public class BookDaoImpl impl BookDao {}
@Service
public class BookServiceImpl impl BookService {}
1.2 纯注解开发
Spring3.0升级了纯注解开发模式,使用java类替代配置文件。@Configuration
@ConponentScan("conxxx.xxx")
public class SpringConfig {}
@Configuration
注解用于设定当前类为配置类@ComponentScan
注解用于设定扫描路径,此注解只能添加一次,多个数据使用数组格式- 读取spring核心配置文件初始化容器对象切换为读取java配置类初始化容器对象
ApplicationContext ctx = new AnnotationCOnfigApplicationContext(SpringConfig.class);
1.3 bean管理
1.3.1 bean作用范围
1.3.2 bean生命周期
- 使用
@Scope
定义bean作用范围@Repository
@Scope("singleton")
public class BookDaoImpl impl BookDao {} - 使用
@PostConstruct
、@PreDestroy
定义bean生命周期@PostConstruct
public void init() {}
@PreDestroy
public void des() {}
二、自动装配
-
2.1 依赖注入
- 使用
@Autowired
注解开启自动装配模式(按类型)@Service
public class BookServiceImpl impl BookService {
@Autowired
private BookDao bookDao;
} - 注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
- 注意:自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法
- 使用
@Qualifier
注解开启指定名称装配bean@Service
public class BookServiceImpl impl BookService {
@Autowired
@Qualifier("bookDao")
private BookDao bookDao;
} 注意:
@Qualifier
注解无法单独使用,必须配合@Autowired
注解使用使用
@Value
实现简单类型注入@Repository("bookDao")
public class BookDaoImpl impl BookDao {
@Value("100")
private String a;
}
2.2 加载properties文件
- 使用
PropertySource
注解加载properties文件@Configuration
@ComponentScan("xxx.xxx")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {} - 注意:路径仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符
*
三、第三方bean管理
-
3.1 使用@Bean
配置第三方bean
|
3.2 将独立的配置类加入核心配置
- 方式一:导入式
public class JdbcConfig {
@Bean
public DataSource...
} - 使用
@Import
注解手动加入配置类到核心配置,此注解只能添加于此,多个数据使用数组格式@Configuration
@Import(JdbcConfig.class)
public class SpringConfig {} - 方式二:扫描式
@Configuration
public class JdbcConfig {
@Bean
public DataSource...
} - 使用
@ComponentScan
注解扫描配置类所在的包,加载对应的配置类信息@Configuration
@ComponentScan({"xx.xx.xx"})
public class SpringConfig {}
3.3 类型依赖注入
3.3.1 简单类型依赖注入
|
3.3.2 引用类型依赖注入
|
- 引用类型依赖注入只需要为bean定义方法设置型参即可,容器会根据类型自动装配对象。
四、总结
-