常用的注解有:
@Component:声明该类是一个组件,可以被Spring容器管理;
@Service:声明该类是一个服务层组件;
@Repository:声明该类是一个数据访问层组件;
@Controller:声明该类是一个控制层组件;
@Configuration:声明该类是一个配置类,类似于Spring XML文件中的bean定义。
在Spring Boot中,常用的注解有:
@SpringBootApplication:声明该类是一个Spring Boot应用的入口类;
@ComponentScan:指定Spring容器应该扫描哪些包来查找组件;
@EnableAutoConfiguration:根据类路径下的依赖自动配置Spring应用程序。
注入方式:
@Autowired:按照类型进行自动装配,如果存在多个相同类型的Bean,可以通过@Qualifier注解指定Bean的名称;
@Resource:按照名称进行自动装配,需要指定Bean的名称;
@Bean:将方法返回的对象声明为一个Bean,可以通过方法的参数来进行自动装配。
下面是代码示例:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User getUserById(Long id) {
return userDao.selectByPrimaryKey(id);
}
}
@Repository
public interface UserDao {
User selectByPrimaryKey(Long id);
}
@Configuration
public class MyConfig {
@Bean
@Qualifier("mysqlUserDao")
public UserDao mysqlUserDao() {
return new MysqlUserDao();
}
@Bean
@Qualifier("oracleUserDao")
public UserDao oracleUserDao() {
return new OracleUserDao();
}
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("mysqlUserDao")
private UserDao userDao;
@Override
public User getUserById(Long id) {
return userDao.selectByPrimaryKey(id);
}
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("mysqlUserDao")
private UserDao userDao;
@Override
public User getUserById(Long id) {
return userDao.selectByPrimaryKey(id);
}
}
注解说明:
UserServiceImpl类使用@Service注解声明为一个服务层组件,使用@Autowired注解自动装配UserDao对象;
UserDao接口使用@Repository注解声明为一个数据访问层组件;
MyConfig类使用@Configuration注解声明为一个配置类,使用@Bean注解声明两个Bean对象;
UserServiceImpl类使用@Autowired和@Qualifier注解自动装配指定名称的Bean对象。