Ignite

Spring常用注解

2017-07-03

常用的是注解有如下几种:

@Controller

@Service

@Autowired

@RequestMapping

@RequestParam

@ModelAttribute

@Cacheable

@CacheFlush

@Resource

@PostConstruct

@PreDestroy

@Repository

@Component (不推荐使用)

@Scope

@SessionAttributes

@InitBinder

@Required

@Qualifier

@Controller
  • 例如:@Controller

    public class SoftCreateController extends SimpleBaseController {}
  • 或者:@Controller

    public class SoftCreateController extends SimpleBaseController {}
  • 说明: @Controller

    负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写
@Service

• 例如:
@Service

public class SoftCreateServiceImpl implements ISoftCreateService {}

• 或者:

@Service(“softCreateServiceImpl”)

• 说明:

@Service 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写

@Autowired

• 例如:
@Autowired
private ISoftPMService softPMService;

• 或者:

@Autowired(required=false)
private ISoftPMService softPMService = new SoftPMServiceImpl();

• 说明:

@Autowired 根据bean 类型从spring 上线文中进行查找,注册类型必须唯一,否则报异常。

与@Resource 的区别在于,@Resource 允许通过bean 名称或bean 类型两种
方式进行查找@Autowired(required=false) 表示,如果spring 上下文中没有找到该类型的bean 时, 才会使用new SoftPMServiceImpl();

与@Resource 的区别在于,@Resource 允许通过bean 名称或bean 类型两种方式进行查找@Autowired(required=false) 表示,如果spring
上下文中没有找到该类型的bean 时, 才会使用new SoftPMServiceImpl();

@Autowired 还有一个作用就是,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、
ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。

@RequestMapping

• 类:

@Controller
@RequestMapping("/bbtForum.do") IT学习者(www.itxxz.com
public class BbtForumController {
@RequestMapping(params = “method=listBoardTopic”)
public String listBoardTopic(int topicId,User user) {}
}

• 方法:

@RequestMapping("/softpg/downSoftPg.do")
@RequestMapping(value="/softpg/ajaxLoadSoftId.do",method = POST)
@RequestMapping(value = “/osu/product/detail.do”, params = { “modify=false” }, method =POST)
• 说明:
@RequestMapping 可以声明到类或方法上

• 参数绑定说明
如果我们使用以下的 URL 请求:
https://localhost/itxxzSpring4?method=listBoardTopic&topicId=1&userId=10&userName=tom
topicId URL 参数将绑定到 topicId 入参上,而 userId 和 userName URL 参数将绑定到 user 对象的
userId 和 userName 属性中。和 URL 请求中不允许没有 topicId 参数不同,虽然 User 的 userId 属性的类型是基本数据类型,但如果 URL 中不存在 userId 参数,Spring 也不会报错,此时 user.userId 值为 0 。如果 User 对象拥有一个 dept.deptId 的级联属性,那么它将和 dept.deptId URL 参数绑定。

@Resource
  • 例如:
    @Resource
    private DataSource dataSource; // inject the bean named ‘dataSource’
  • 或者:
    @Resource(name=“dataSource”)
    @Resource(type=DataSource.class)
  • 说明:
    @Resource 默认按bean 的name 进行查找,如果没有找到会按type 进行查找,
    此时与@Autowired 类 似.

    在没有为 @Resource 注解显式指定 name 属性的前提下,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。此时 name 属性不需要指定 ( 或者指定为""),否则注入失败;
@Scope
  • 例如
    @Scope(“session”)
    @Repository()
    public class UserSessionBean implementsSerializable {}
  • 说明

在使用XML 定义Bean 时,可以通过bean 的scope 属性来定义一个Bean 的作用范围,
同样可以通过@Scope 注解来完成

@Scope中可以指定如下值:
singleton:定义bean的范围为每个spring容器一个实例(默认值)
prototype:定义bean可以被多次实例化(使用一次就创建一次)
request:定义bean的范围是https请求(springMVC中有效)
session:定义bean的范围是https会话(springMVC中有效)
global-session:定义bean的范围是全局https会话(portlet中有效)


小链接:ssm配置(https://www.cnblogs.com/youyefly/p/5685509.html),
(https://blog.csdn.net/xuejian0616/article/details/52259335)

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章