前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring纯注解开发入门

Spring纯注解开发入门

作者头像
Cikian.
发布2023-08-09 19:08:31
1480
发布2023-08-09 19:08:31
举报
文章被收录于专栏:Cikian技术站

Spring MVC入门(注解开发)

一、入门

1. 使用@Component定义bean

代码语言:javascript
复制
@Component("bookDao")
public class BookDaoImpl implements BookDao {
    ...
};

2. 核心配置文件中通过组件扫描bean

代码语言:javascript
复制
<context:component-scan base-package="com.cikain"/>

3. @Component注解的三个衍生注解

  • @Controller:用于表现层bean定义
  • @Service:用于业务层bean定义
  • @Repository:用于数据层bean定义

三个衍生注解与@Component用法与功能一样,名称不同,易于区分

二、 简化(配置类)

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
">

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

</beans>

同等于

代码语言:javascript
复制
@Configuration
@ComponentScan("com.cikian")
public class SpringConfig {
};

使用配置类时

代码语言:javascript
复制
public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        BookService bookService = ctx.getBean(BookService.class);
        bookService.save();
    };
};

注意:

@Configuration用于设定当前类为配置类

@ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据用数组格式,如:

代码语言:javascript
复制
@ComponentScan({"com.cikian.service","com.cikian.dao"};)

三、纯注解控制bean生命周期

代码语言:javascript
复制
@Component
@Scope("singleton")
public class BookServiceImpl implements BookService {
    private BookDao bookDao;

    @Override
    public void save() {
        System.out.println("BookServiceImpl save");
        bookDao.save();
    };

    @PostConstruct
    public void init() {
        System.out.println("BookServiceImpl init");
    };

    @PreDestroy
    public void destroy() throws Exception {
        System.out.println("BookServiceImpl destroy");
    };
};
  1. @Scope注解控制bean单例或非单例
  2. @PostConstruct定义bean初始方法
  3. @PreDestroy定义bean销毁方法

四、依赖注入(自动装配)

1. 注入引用类型

代码语言:javascript
复制
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;

    public void save() {
        System.out.println("BookServiceImpl save");
        bookDao.save();
    };
};

注意:使用注解注入依赖时,对私有属性进行暴力反射初始化私有属性,所以可以不需要setter方法。自动装配默认按类型注入,假设有多个类型相同的bean,Spring支持俺名称装配,使用@Qualifier注解指定名称,此注解依赖@Autowired注解

2. 注入简单类型(值类型)

使用@Value注解,如:

代码语言:javascript
复制
public class BookServiceImpl implements BookService {
    @Value("book_name")
    private String name;
};

3. 加载配置文件

在配置类中使用@PropertySource注解加载外部配置文件,如:

代码语言:javascript
复制
@Configuration
@ComponentScan("com.cikian")
@PropertySource("jdbc.properties")
public class SpringConfig {
};

多个配置文件使用数组格式:@PropertySource({"jdbc.properties","jdbc2.properties","jdbc3.properties"}) 不支持使用通配符!

五、管理第三方bean

1. 配置bean

使用druid举例,举例仅为常用方法

新建配置类JdbcConfig类

代码语言:javascript
复制
public class JdbcConfig {
    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/cikian");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        return dataSource;
    };
};

在此配置类中创建方法,方法返回值为所需要的bean,并在方法上方使用@Bean注解。可使用@Bean("bean名称")给bean设置名称。

在Spring配置类中导入JdbcConfig类

代码语言:javascript
复制
@Configuration
@Import({JdbcConfig.class};)
public class SpringConfig {
};

使用@Import注解导入配置,@Import({})导入多个配置以数组格式传递参数。

2. 第三方bean注入依赖

简单类型使用@Value注解,引用类型给出形参即可。

代码语言:javascript
复制
public class JdbcConfig {
    @Value("${jdbc.driverClassName};")
    private  String driverClassName;
    @Value("${jdbc.url};")
    private String url;
    @Value("${jdbc.username};")
    private String username;
    @Value("${jdbc.password};")
    private String password;

    @Bean
    public DataSource dataSource(BookService bookService){
        System.out.println(bookService);
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    };
};

六、XML配置与注解配置对比

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring MVC入门(注解开发)
    • 一、入门
      • 1. 使用@Component定义bean
      • 2. 核心配置文件中通过组件扫描bean
      • 3. @Component注解的三个衍生注解
    • 二、 简化(配置类)
      • 三、纯注解控制bean生命周期
        • 四、依赖注入(自动装配)
          • 1. 注入引用类型
          • 2. 注入简单类型(值类型)
          • 3. 加载配置文件
        • 五、管理第三方bean
          • 1. 配置bean
          • 2. 第三方bean注入依赖
        • 六、XML配置与注解配置对比
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档