Spring 常用注解
@Controller
对应表现层的 Bean
@ Service
对应的是业务层 Bean
@ Repository
对应数据访问层 Bean (即DAO组件)
@Component
把普通 pojo 实例化到 Spring 容器中,相当于配置文件中的 <bean id="" class=""/>
当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@Repository(value="userDao")
注解是告诉 Spring,让 Spring 创建一个名字叫 “userDao” 的 UserDaoImpl 实例。
@Autowired
自动装配,默认按类型装配
@Resource
作用相当于@Autowired,均可标注在字段或属性的 setter 方法上。
不同点:
- @Autowired是Spring的注解,@Resource是javax.annotation注解
- @Autowired默认按类型装配,@Resource默认按Name自动注入
- @Resource注解的使用性更为灵活,可指定名称,也可以指定类型 ;@Autowired注解进行装配容易抛出异常,特别是装配的bean类型有多个的时候,而解决的办法是需要在增加@Qualifier进行限定。
@Qualifier
作用:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:
@Autowired
@Qualifier(value = “demoInfoService”)
private DemoInfoService demoInfoService;
@Scope
注解 作用域:如 @Scope("prototype")
@Bean
@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
使用@Bean
注解的好处就是能够动态获取一个Bean对象,能够根据环境不同得到不同的Bean对象。或者说将Spring和其他组件分离(其他组件不依赖Spring,但是又想Spring管理生成的bean)。
spring MVC注解
@Controller
表明该类会作为与前端作交互的控制层组件
@RequestMapping
这个注解用于将url映射到整个处理类或者特定的处理请求的方法。可以只用通配符
@RequestParam
将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true,也就是改参数必须要传。如果改参数可以传可不传,可以配置required=false。
@RequestMapping("/happy")
public String sayHappy(
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "age", required = true) String age) {
//age参数必须传 ,name可传可不传
...
}
@PathVariable
该注解用于方法修饰方法参数,会将修饰的方法参数变为可供使用的 uri变量
@RequestMapping(value="/happy/{dayid}",method=RequestMethod.GET)
public String findPet( @PathVariable String dayid, Model mode) {
//使用@PathVariable注解绑定 {dayid} 到String dayid
}
@RequestBody
指方法参数应该被绑定到HTTP请求Body上。
@ResponseBody
@ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到 HTTP response body中。
@ResponseBody在输出 JSON 格式的数据时,会经常用到。
@RequestMapping(value = "/happy", method =RequestMethod.POST)
@ResponseBody
public String helloWorld() {
return "Hello World";//返回String类型
}
Spring事务模块注解
在处理dao层或service层的事务操作时,譬如删除失败时的回滚操作。使用@Transactional作为注解,但是需要在配置文件激活
<!-- 开启注解方式声明事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
@Service
public class CompanyServiceImpl implements CompanyService {
@Autowired
private CompanyDAO companyDAO;
@Transactional(
propagation = Propagation.REQUIRED,
readOnly = false,
rollbackFor = Exception.class)
public int deleteByName(String name) {
int result = companyDAO.deleteByName(name);
return result;
}
...
}
SpringBoot开发中的常用注解
@SpringBootApplication:
包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。
@ComponentScan
让 Spring Boot 扫描到 Configuration 类并把它加入到程序上下文。
@Configuration
等同于 Spring 的 XML 配置文件;使用Java代码可以检查类型安全。
@EnableAutoConfiguration
开启自动配置。
@ComponentScan
组件扫描,可自动发现和装配一些 Bean。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
// 等同于 @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
@Controller和 + ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
@Value
作用:注入Spring boot application.properties配置的属性的值。示例代码:
@Value(value = “#{message}”)
private String message;
@ImportResource
用来加载 xml 配置文件