Spring注解@Component、@Repository、@Service、@Controller区别
如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。
@Service服务层组件,用于标注【业务层】组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,例如Chinese实例化为chinese,如果需要自己改名字则:@Service(“你自己改的bean名”)。
@Service
public class VentorServiceImpl implements iVentorService{}
@Controller用于标注【控制层】组件(如struts中的action)
@RestController
public class DepartmentAction {}
@Repository【持久层】组件,用于标注【数据访问】组件,即DAO组件
@Repository
public class VentorDaoImpl implements iVentorDao {}
@Component泛指组件,当组件【不好归类】的时候,我们可以使用这个注解进行标注。
注入方式:
把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注
入时不要new 这个注入的类,因为spring会自动注入,如果手动再new的话会出现错误,然后属性加上
@Autowired后不需要getter()和setter()方法,Spring也会自动注入。
@MapperScan
作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加,添加@MapperScan(“com.winter.dao”)注解以后,com.winter.dao包下面的接口类,在编译之后都会生成相应的实现类
@SpringBootApplication
@MapperScan("com.winter.dao")
public class SpringbootMybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
}
}