2021年1月22日星期五

使用注解开发Spring

【注意】:在spring4之后,想要使用注解形式,必须得要引入aop的包

image-20210120153838106

还需要在配置文件中引入context依赖

<?

9.1、Bean的实现

我们之前都是使用 bean 的标签进行bean注入,但是实际开发中,我们一般都会使用注解

  • 给类添加@Component注解后,这个类就交给了Spring管理,相当于一个Bean

等价于配置文件的:

<bean id="user" />
  • 不添加参数时,Bean的id为这个类的类名首字母小写。

  • 添加value属性后,id为value的值。

具体实现步骤

  1. 在applicationContext.

    <!-- 指定要扫描的包,这个包下的所有注解都会生效 --><context:component-scan base-package="com.jh.domain"/>
  2. 编写实体类,添加@Component注解

    @Component(value = "user")public class User { private String name; @Override public String toString() {  return "User{" +    "name='" + name + '\'' +    '}'; } public String getName() {  return name; } public void setName(String name) {  this.name = name; }}
  3. 测试结果,输出user,说明注解使用成功!

    @Testpublic void test01() throws Exception{ ApplicationContext context = new ClassPath

9.2、属性的注入

我们也可以使用@Value注解为Bean注入属性

使用@Value注解,它的参数就是您需要注入的值。

它等价于

<property name="name" value="姓名"/>

具体实现

  1. 为实体类的属性添加@Value注解

    @Componentpublic class User { @Value("姓名") private String name; // 使用@Value注解的属性,不需要添加set方法}
  2. 如果属性有set方法,也可以将@Value注解添加在其上面

    @Componentpublic class User { private String name; @Value("姓名") public void setName(String name) {  this.name = name; }}	

9.3、衍生的注解

@Component有几个衍生注解,我们在web开发中,会按照MVC三层架构分层!

为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

  • @Controller:【web层】

    import org.springframework.stereotype.Controller;@Controllerpublic class UserController {}
  • @Service:【service层】

    import org.springframework.stereotype.Service;@Servicepublic class UserServiceImpl implements UserService {}
  • @Repository:【dao层】

    import org.springframework.stereotype.Service;@Repositorypublic class UserDaoImpl implements UserDao {}

@Component和这个三个衍生注解的功能都是一样的,都代表将其交给Spring管理,是一个Bean

【注意】要使用这个几个注解,必须现在spring配置文件了设置注解扫描

我们可以设置扫描器扫描它们的上一级包,这样就可以实现扫描所有注解

image-20210120163538852

<context:component-scan base-package="com.jh"/>

使用com.jh包就可以扫描其下面所有的子包

9.4、自动装配的注解

在自动装配时已经提到过了,自动装配的注解

  • @Autowired:使用byType方式注入
  • @Autowired配合@Qualifier可以实现先byType,再byName
  • @Resource注解:先byName,再byType

详情请见:https://www.cnblogs.com/paidaxing0623/p/14312223.html

9.5、作用域

我们可以用过@Scope注解指定Bean的作用域

使用@Scope注解可以设定以下值

  • @Scope,相当于@Scope("singleton")【单例模式;默认】
  • @Scope("prototype")【原型模式】
  • @Scope("request")
  • @Scope("session")
  • 等等……

一般开发中常用的是singleton和prototype两种

它相当于

image-20210120170019978

具体实现

@Component@Scopepublic class User { private String name; @Value("姓名") public void setName(String name) {  this.name = name; }}

9.6、小结

  • 注解只能特定的类使用,维护相对复杂,但是开发简单方便!

  • 注解只负责完成属性的注入
  • 使用过程中,注意要使用注解,必须开启注解的扫描
<!-- 自动装配时使用 --><context:annotation-config/><!-- 指定要扫描的包,这个包下的所有注解都会生效 --><context:component-scan base-package="com.jh"/>

作用:

  • 进行注解驱动注册,从而使注解生效
  • 用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
  • 如果不扫描包,就需要手动配置bean
  • 如果不加注解驱动,则注入的值为null!








原文转载:http://www.shaoqun.com/a/512556.html

跨境电商:https://www.ikjzd.com/

beien:https://www.ikjzd.com/w/1336

跨境通:https://www.ikjzd.com/w/1329


【注意】:在spring4之后,想要使用注解形式,必须得要引入aop的包​ 还需要在配置文件中引入context依赖<?9.1、Bean的实现我们之前都是使用bean的标签进行bean注入,但是实际开发中,我们一般都会使用注解!给类添加@Component注解后,这个类就交给了Spring管理,相当于一个Bean。等价于配置文件的:<beanid="user"/&g
鸥鹭:鸥鹭
vava:vava
跨境电商的优劣势!:跨境电商的优劣势!
迎战四季度假日旺季,你需要知道哪些趋势?:迎战四季度假日旺季,你需要知道哪些趋势?
十堰有什么地方特产 - :十堰有什么地方特产 -

没有评论:

发表评论