附带案例源码免费提供下载–在主页
需要掌握的知识总结:
使用注解需要开启注解扫描,加载类中的注解
<context:component-scan base-package=“包名”/>
在进行包所扫描时,会对配置的包及其子包中所有文件进行扫描
常用注解
非引用类型注入
- @Value
引用类型注入
- @Autowired==@Inject
- @Qualifier==@Named
- @Primary
- @Resource
加载properties文件注解
- @PropertySource
注解驱动的意义
- 注解启动时使用注解的形式替代xml配置,将繁杂的spring配置文件从工程中彻底消除掉,简化书写。
注解驱动的弊端:
XML中配置第三方开发的资源是很方便的,但使用注解驱动无法在第三方开发的资源中进行编辑,因此会增大开发工作量。
例如:
使用注解方式引入dataSource
@Bean("dataSource")
public DataSource createDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
使用xml文件引入DataSource
<!--加载druid资源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}" ></property>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="url" value="${jdbc.url}"/>
</bean>
常用注解
创建Bean对象:类注解
- @Component @Controller @Service
@Repository(定义在持久层上)
bean的作用域:类注解 - @Scope
bean的生命周期:方法注解
@PostConstruct、@PreDestroy
加载第三方资源:方法注解
@Bean
bean的引用类型属性注入:属性注解、方法注解
- @Autowired、@Qualifier、@Resource
bean的非引用类型属性注入:属性注解、方法注解
- @Value("${jdbc.username}")
bean的引用类型属性注入:类注解(该注解基本不用)
- @Primary
不常用注解:bean的引用类型属性注入
@Inject、@Named、@Resource
@Inject与@Named是JSR330规范中的注解,功能与@Autowired和@Qualifier完全相同
加载properties文件注解
- @PropertySource(value = “classpath:xxxx.properties”)
不支持通配符格式
纯注解格式
@Configuration 设置当前类为Spring核心配置类
@ComponentScan 开启注解,扫描指定包及其子包
加载纯注解格式上下文对象,需要使用AnnotationConfigApplicationContext
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
导入第三方Bean
@Import
@Configuration
@Import(xxxx.class)
public class SpringConfig {
}