注解驱动的意义
注解启动时使用注解的形式替代xml配置,将繁杂的spring配置文件从工程中彻底消除掉,简化 书写
如果是我们自己写的代码建议使用注解配置!
如果是第三方的配置,还是建议xml!
常用注解开发
注解扫描
要想使用注解,必须在applicationContext.xml中添加一段配置开启注解扫描
<!--配置注解扫描【组件扫描】,扫描指定包下的注解-->
<context:component-scan base-package="包路径"></context:component-scan>
相当于配置文件中扫描包(定义在类上)
@ComponentScan("com.pc")
代替<bean>标签的注解
@Component("括号里不写参数,默认代表是方法名开头小写")
@Controller:
@Service:
@Repository:
以上四个效果都一样,为了在项目中让人更加读懂 才会使用分层 (定义在类上)
单列与多例的注解
@Scope(“xxx”)
常用取值:singleton prototype(默认是singleton(单例)) (定义在方法上)
生命周期注解
@PostConstruct
作用: 用于指定初始化方法。
@PreDestroy
作用: 用于指定销毁方法
(以上都是定义在方法上)
加载第三方资源注解(定义在方法上)
`@Bean`:用于把当前方法的返回值作为bean对象存入spring的ioc容器中,可以指定bean的 id。当不写时,默认值是当前方法的名称
注入数据的注解
@Value
注入基本数据类型和String类型数据的
可以指定值,也可以写${}
(定义在需要赋值的成员变量上)
引用类型属性注入
@Autowired
相当于配置文件中需要传入有set属性的,现在只需要写这一句就行了
@Qualifier
必须和@Autowire一起使用;但是给方法参数注入时,可以独立使用。
就是给他一个后面加上一个括号,一个id
(以上两个都定义在需要写set方法的成员变量属性上;比如 private xxx xxx;)
加载properties文件
@PropertySource("classpath:jdbc.properties")
(定义在类上方)
纯注解
@Configuration注解 (用来代替applicationContext.xml)
(定义在类上方)
.第三方配置类导入注解
@Import({JDBCConfig.class,MyBatisConfig.class}) 如果有多个 中间需要用逗号隔开
用于加载配置注解的类
( 定义在类上方)
bean加载控制注解
@DependsOn 控制依赖关系
(一般定义在类上 用于类注解或者方法注解)
使用注解测试格式
public class ConfigTest {
public static void main(String[] args) {
//(括号中写入你需要测试的类.class;固定格式)
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
//调用getBean(写入你需要测试的类的方法名开头小写)
AccountService bean = (AccountService) context.getBean("accountService");
//调用你的service方法
Account byId = bean.findById(2);
System.out.println(byId);
}