spring框架--spring注解开发

j9527      2022-05-19     668

关键词:

Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替核心配置文件中的依赖注入可以达到简化配置的效果,提高开发效率。

几个常用的原始注解:

创建对象的注解:

注解说明
@Component 使用在类上,用于实例化Bean
@Controller 使用在web层类上,用于实例化Bean
@Service 使用在service层类上,用于实例化Bean
@Repository 使用在dao层类上用于,实例化Bean

依赖注入的注解:

注解说明
@Autowired 根据类型依赖注入,如果找到多个,则根据变量名依赖注入
@Qualifier 与@Autowired一起使用,用于根据名称进行依赖注入
@Resource 相当于@Autowired+@Qualifier,按照名称进行注入
@Value 注入普通属性。一般用于获取properties中的key,然后注入成员变量中

作用范围的注解:

注解说明
@Scope 两个取值:“prototype” -> 多例的,“singleton” -> 单例的(默认)

其他注解:

注解说明
@PostConstruct 被标注的方法,在对象被创建的时候执行
@PreDestroy 被标注的方法,在对象被销毁的时候执行

等等等等,但是使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:

  非自定义的Bean的配置:<bean>

  加载properties文件的配置:<context:property-placeholder>

  组件扫描的配置:<context:component-scan>

  引入其他文件:<import>

还有一些Spring的新注解:Spring所谓的新注解,就是用来完全替代Spring的配置文件用的。

注解说明
@Configuration 用于指定当前类是一个 Spring配置类,当创建容器时会从该类上加载注解
@ComponentScan 用于指定 Spring 在初始化容器时要扫描的包。
@Bean 使用在方法上,标注将该方法的返回值存储到 Spring 容器中
@PropertySource 用于加载.properties 文件中的配置
@Import 用于导入其他配置类

 案例仅供参考:

//表示该类是一个Spring的配置类,用来存放spring的配置信息
@Configuration    
public class SpringConfiguration {
    
}
//用于指定 Spring 在初始化容器时要扫描的包。   
//相当于xml配置时的`<context:component-scan base-package="com.itheima"/>`

@Configuration
@ComponentScan("com.itheima")        
public class SpringConfiguration {
    
}
//用于导入其他的配置类 
//相当于xml配置时的`<import resource="classpath:applicationContext-dao.xml"/>`

@Configuration
@ComponentScan("com.itheima")
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {
}
//用于properties配置文件
//相当于xml配置时的`<context:property-placeholder location="classpath:jdbc.properties"/>`

@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {
    @Value("${jdbc.driver}")
    private String driver;
    
    @Value("${jdbc.url}")
    private String url;
    
    @Value("${jdbc.username}")
    private String username;
    
    @Value("${jdbc.password}")
    private String password;
}
//使用在方法上,Spring会自动执行该方法,并把方法返回的对象,存储在spring容器中

@Bean("dataSource")
public DataSource getDataSource() throws PropertyVetoException { 
    ComboPooledDataSource ds = new ComboPooledDataSource(); 
    ds.setDriverClass(driver);
    ds.setJdbcUrl(url);
    ds.setUser(username);
    ds.setPassword(password);
    return ds;
} 

测试新注解:

@Test
public void testAnnoConfiguration() throws Exception {
    //根据配置类SpringConfiguration.class,获取Spring的核心容器
    ApplicationContext ac = 
            new AnnotationConfigApplicationContext(SpringConfiguration.class);
    
    //获取userService对象
    UserService userService = (UserService)ac.getBean("userService");
    userService.save();
    
    //获取dataSource对象
    DataSource dataSource = (DataSource)ac.getBean("dataSource");
    Connection connection = dataSource.getConnection(); 
    System.out.println(connection);
}

 

使用注解开发的步骤:

1.导入坐标:因为我们采用的是C3P0,所以要导入

 1      <dependency>
 2             <groupId>c3p0</groupId>
 3             <artifactId>c3p0</artifactId>
 4             <version>0.9.1.2</version>
 5         </dependency>
 6         <dependency>
 7             <groupId>mysql</groupId>
 8             <artifactId>mysql-connector-java</artifactId>
 9             <version>5.1.47</version>
10         </dependency>
11         <dependency>
12             <groupId>org.springframework</groupId>
13             <artifactId>spring-jdbc</artifactId>
14             <version>5.0.5.RELEASE</version>
15         </dependency>

2.编写实现功能的接口和类:

 1 public interface UserService {
 2     public List<User> findAll() throws SQLException;
 3 }
 4 
 5 
 6 
 7 @Service
 8 public class UserService implements com.itcast.Service.UserService {
 9 
10     @Autowired//注解注入
11     private UserDao userDao;
12 
13     public List<User> findAll() throws SQLException {
14         List<User> users = userDao.findAll();
15         return users;
16     }
17 }
//接口:
public interface UserDao {
    public List<User> findAll() throws SQLException;
}


//实现类:
@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private DataSource dataSource;

    public List<User> findAll() throws SQLException {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        List<User> users = jdbcTemplate.query("select * from userform", new BeanPropertyRowMapper<User>(User.class));
        return users;
    }
}

3.配置核心配置文件applicationContext:

<?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.itcast"></context:component-scan>

    <!--配置C3P0链接池-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql:///daynov06"></property>
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
    </bean>
    
</beans>

4.编写测试类:

 1 public class Demo1 {
 2     public static void main(String[] args) throws SQLException {
 3 
 4         //读取配置文件
 5         ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
 6         //从spring中获取目标对象
 7         UserService bean = app.getBean(UserService.class);
 8         //调用方法
 9         List<User> all = bean.findAll();
10         for (User user : all) {
11             System.out.println(user);
12         }
13 
14     }
15 }

完成测试。

其他的注解可以查看功能相应的进行练习。

spring框架学习----bean自动装配注解开发(代码片段)

文章目录Spring框架学习(七)----bean自动装配、注解开发一、Bean的自动装配1、在xml中显式的配置(1)ByName(2)ByType总结2、隐式的自动装配【重要】Spring支持注解的代码(1)@Autowired@Qualifier&#... 查看详情

spring框架学习笔记---[在spring中初步上手使用注解开发;以及jdbc的初步使用](代码片段)

spring官网-->spring官网spring5.3.12–>spring-framework在线文档-->Spring5.3.12文章目录1.初步上手注解开发(1)首先试试xml进行配置的方式(2)快速上手注解开发过程2.其他的注解使用(1)==@Component(value="user")==;(2) 查看详情

javaee开发之spring框架整合2(完结撒花)(代码片段)

...何式增长,开发难度也在不断递增,该如何解决?Spring可以简化开发,降低企业级开发的复杂性,使开发变得更简单快捷随着项目规模与功能的增长,遇到的问题就会增多,为了解决问题会引入更多的框架,... 查看详情

spring注解开发(代码片段)

简介: Spring注解开发1.Spring原始注解Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。Spring原始注解主要是替... 查看详情

spring纯注解开发模式简直就是spring中的spring(代码片段)

...f3f3;️‍🌈)3.简单数据注入4.读取properties配置文件六.Spring整合MyBatis前言Spring3.0引入了纯注解开发的模式,框架的诞生是为了简化开发,那注解开发 查看详情

spring框架学习4:bean注解配置(代码片段)

在上一篇中学习了如何使用spring来管理对象,但是再实际的开发中,再spring配置文件中配置bean元素是非常繁琐的,因此实际开发中使用注解来配置spring。具体操作如下:在配置文件中,扫描实体类包:<?xmlversion="1.0"encoding="UTF-... 查看详情

二java框架之spring注解开发(代码片段)

...ig类)引用类型的注入总结1.6XML配置和注解配置对比2.Spring整合MyBatis2.1mybatis写法回顾2.2整合:导入依赖:pom.xml2.3整合:环境准备2.4整合:Spring核心配置文件SpringConfig.javaJdbcConfig.javaMybatisConfig.java2.5运行和说明3.... 查看详情

spring从入门到精通—注解开发(代码片段)

Spring原始注解Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。Spring原始注解主要是替代的配置注解说明对应xml标签@Component使用在类... 查看详情

spring注解驱动开发之aop容器篇(代码片段)

  前言:现今SpringBoot、SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解、原理,比如@Conditional、@Import、@EnableXXX等。如果掌握这些底层原理、注解,那么我们对这些高层框架就能做到高度... 查看详情

spring注解开发--原始注解(出现比较早的注解)开发(代码片段)

1.Spring原始注解Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。Spring原始注解主要是替代Bean的配置用xml来进行配... 查看详情

javaweb开发之spring详解之——spring的入门以及ioc容器装配bean(xml和注解的方式)spring整合web开发整合junit4测试

Spring框架学习路线Spring的IOCSpring的AOP,AspectJSpring的事务管理,三大框架的整合Spring框架概述什么是Spring? Spring是分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。所谓分层:SUN提供的EE的三层结构:web层、业务层、数据访问层... 查看详情

太爽了,纯注解开发模式简直就是spring中的spring!(代码片段)

点击关注公众号,实用技术文章及时了解‍Spring3.0引入了纯注解开发的模式,框架的诞生是为了简化开发,那注解开发就是简化再简化。Spring的特性在整合MyBatis方面体现的淋漓尽致哦‍‍一.注解开发以前跟老韩学习S... 查看详情

太爽了,纯注解开发模式简直就是spring中的spring!(代码片段)

点击关注公众号,实用技术文章及时了解‍Spring3.0引入了纯注解开发的模式,框架的诞生是为了简化开发,那注解开发就是简化再简化。Spring的特性在整合MyBatis方面体现的淋漓尽致哦‍‍一.注解开发以前跟老韩学习S... 查看详情

spring第二课spring框架的ioc的注解方式的使用

概念在上一篇文章中对Spring框架的初步认识后,本文采用Java注解的方式对Spring框架IOC的新的认识。1.搭建项目环境打开IEDA开发软件,创建webapplication项目,导入Spring框架的jar包至WEB-INF的lib文件夹中,并关联至项目将appl... 查看详情

spring注解开发annotationconfigapplicationcontext的使用

使用AnnotationConfigApplicationContext可以实现基于Java的配置类加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置,更加便捷。示例 AppConfig.javapackagecom.myapp.config;importcom.myapp.Entitlement;importorg.springframewor 查看详情

spring框架开发底层的@component通用组件模式@service服务模式@configuration配置模式等注解装配技术详解(代码片段)

Spring模式注解装配(StereotypeAnnotations)模式注解定义一种用于声明在应用中扮演“组件”角色的注解。常用模式注解整理如Spring中的@Repository是用于扮演仓储角色的模式注解,用来管理和存储某种领域对象。还有如@Component... 查看详情

关于spring注解开发教程,打包全送你(代码片段)

摘要:spring是我们web开发中必不可少的一个框架,基于传统的xml方式配置bean总觉得太过繁琐,从spring2.5之后注解的出现可以大大简化我们的配置。本文分享自华为云社区《如何高效提升Java开发效率—Spring注解开发全... 查看详情

spring框架的ioc之注解方式的快速入门

...所有需要的jar包*引入IOC容器必须的6个jar包*多引入一个:Spring框架的AOP的jar包,spring-aop的jar包2.步骤二:创建对应的包结构,编写Java的类*UserService--接口*UserServiceImpl--具体的实现类3.步骤三:在src的目录下,创建applicationContext.xml... 查看详情