注解
@Component 类注解 通过扫描后,可以创建该类并存储到IOC容器中
默认名称是 类名首字母小写 (accountServiceImpl)
可以通过value 属性 指定对象的名称
三个子注解
@Controller 与@Component注解 作用一样,一般用于表现层
@Service 作用一样 一般用于业务层
@Repository 作用一样,一般用于持久层
%%%1 @Autowired 可以标记在(setter)方法,构造方法,参数,属性上
标记在属性上 等同于给对象赋值,不需要setter方法
他的作用是: 自动装配,可以从IOC容器中找到复合类型的对象注入
特点是:默认是根据类型(byType)自动注入
如果相同的对象有多个 1)自动按照属性名从容器中查找
2)可以使用@Qualifier 注解 指定属性名称
3)@Primary 提高对象的优先级
属性: required 默认值是true, 创建IOC容器,必须注入此对象,否则报错
%%%2@Resource 自动装配, 需要指定name属性,默认根据名称(byName) 从容器中查找对象 如果找不到则根据类型查找对象
%%%1和%%%2的区别: 1是由Spring 定义, 默认byType注入
2是由jdk定义,默认byName注入
指定对象是单例还是原型模式
@Scope("SINGLETON") 作用域(“单例|原型”) PROTOTYPE | SINGLETON
有关生命周期的两个注解
@PostConstruct 对象初始化-->执行
@PreDestroy 对象销毁 ---> 执行
事务操作的相关注解
@Transactional(属性) 使注解生效(可以标记在类上 或者方法上)
标记到类上 所有方法有效(类上写了之后 方法上也能写,优先级更高)
其中的属性 propagation:传播行为 propagation. required | supports
isolation:隔离级别 Isolation.default
timeout: 超时时间 -1
rollbackFor: 需要回滚的异常 Exception.class
readOnly: false
以上的注解放在实现类对象 上或者其方法上
****************************************************************
com.zhb.config 创建SpringConfig 类(以下注解 都是对该类的)
@Configuration 标记该类为 配置类 (相当于xml)
@Bean 注解 方法注解 把方法的返回值注入到IOC容器中----适合创建第三方类对象
@Bean注解标记的方法,如果参数 为引用数据类型,默认有一个注解为@Autowired
@EnableAspectJAutoProxy 开启AOP 面向切面编程
@EnableTransactionManagement 开启事务
@Import(value={其他配置类对象数组}) 用来导入其他配置类 括号内 写
配置文件中的包扫描的相关注解
@ComponentScan(value={String数组}) 开启包扫描
在config包中创建JdbcConfig类
(
@PropertySource(“classpath:db.properties”) 加载的属性文件
类中
@value("${xxxxxx}") 对属性进行赋值
@Bean
DataSource类型的方法
其中设置属性参数
)
在config包中创建MybatisConfig类
(
类中
@Bean
SqlsessionFactoryBean类型的方法
其中写属性参数
@Bean
MapperScannerConfigure类型的方法
其中写属性(扫描哪个包)
)
最后测试纯注解模式
测试类中
创建AnnotationConfigApplicationContext对象 (里边参数 要么是包名的字符串, 要么是配置类的类对象) new AnnotationConfigApplicationContext(SpringConfiguration.class)
getBean方法获取 业务层对象
调用方法
进行测试