Mybatis 在配置Mybatis 的datasource 和sessionFactory
org.springframework.jdbc.datasource.DriverManagerDataSource
org.mybatis.spring.SqlSessionFactoryBean
之后要使用接口调用xml里的sql语句 还需申明 Mybatis的Mapper扫描包以及 sessionfactory
这样 就可以直接通过@Autowired 将对应的Mapper接口租入使用
附上几个注解的解释 和用法
@Repository注解:用于标注数据访问组件,即DAO组件@Service注解:用于标注业务层组件@Controller注解:用于标注控制层组件(如struts中的action)@Component注解:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Controller("Bean的名称")
定义控制层Bean,如Action
@Service("Bean的名称")
定义业务层Bean
@Repository
@Repository("Bean的名称")
定义DAO层Bean
@Component
定义Bean, 不好归类时使用.
--自动装配Bean (选用一种注解就可以)
@Autowired (Srping提供的)
默认按类型匹配,自动装配(Srping提供的),可以写在成员属性上,或写在setter方法上
@Autowired(required=true)
一定要找到匹配的Bean,否则抛异常。 默认值就是true
@Autowired
@Qualifier("bean的名字")
按名称装配Bean,与@Autowired组合使用,解决按类型匹配找到多个Bean问题。
@Resource JSR-250提供的
默认按名称装配,当找不到名称匹配的bean再按类型装配.
可以写在成员属性上,或写在setter方法上
可以通过@Resource(name="beanName") 指定被注入的bean的名称, 要是未指定name属性, 默认使用成员属性的变量名,一般不用写name属性.
@Resource(name="beanName")指定了name属性,按名称注入但没找到bean, 就不会再按类型装配了.
@Inject 是JSR-330提供的
按类型装配,功能比@Autowired少,没有使用的必要。
--定义Bean的作用域和生命过程
@Scope("prototype")
值有:singleton,prototype,session,request,session,globalSession
@PostConstruct
相当于init-method,使用在方法上,当Bean初始化时执行。
@PreDestroy
相当于destory-method,使用在方法上,当Bean销毁时执行。
--声明式事务
@Transactional
关于Spring Boot 通过注解注册托管Bean的时候 他默认扫描的是入口类Application.class的同包下的类
如果Application类所在的包为:io.github.gefangshuai.app
,则只会扫描io.github.gefangshuai.app
包及其所有子包,如果service或dao所在包不在io.github.gefangshuai.app
及其子包下,则不会被扫描!
也就是不会注册成为Bean通过自动注入注解注入的时候就会出错
这个时候 我们需要用
@ComponentScan(basePackages={"com.zx"})
手动设置扫描的包 然后就会找到该包下面所有申明为Bean的类 进入IOC托管