0
点赞
收藏
分享

微信扫一扫

spring注解开发

村里搬砖的月野兔 2022-04-29 阅读 153
spring

1. 导入依赖

junit和spring-test

		<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.16.RELEASE</version>
        </dependency>

2. 注解的作用

  • 可以通过在.java文件中添加注解,可以替代spring-config.xml配置文件中的数据源、组件扫描等文件
注解说明
@Configuration用于指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解
@ComponentScan用于指定Spring在初始化容器时哟啊扫描的包,作用和Spring的xml配置文件中的<context:component-scan base-package=“com.lyx”/>一样
@Bean使用在方法上,标注将该方法的返回值存储到Spring容器中 ,如@Bean(“dataSource”),Spring会将当前方法的返回值以指定名称(dataSource)存储到Spring容器中
@PropertySource用来加载.properties文件中的配置,作用和Spring的xml配置文件中的 <context:property-placeholder location=“classpath:jdbc.properties”/>一样
@Import用于导入其他配置文件,作用和Spring的xml配置文件中的<import resource=“classpath:spring.xml”/>一样,@Import({XXX.class,XXX.xml})可以导入多个配置文件

3. 注解替换


@Configuration、@ComponentScan、@Bean、@PropertySource、@Import


3.1 注解替换Dao层

原xml文件如下,我们是不用写例如UserDaoImpl等UserDao的实现类的,使用注解开发却需要写,因为注解是添加在实现类上面

<?xml version="1.0" encoding="utf8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd"
>
    <bean id="user" class="com.lyx.entity.User">
        <property name="id" value="1"></property>
        <property name="city" value="China"></property>
    </bean>
</beans>

注解添加在实现类上面

import com.lyx.dao.UserDao;
import org.springframework.stereotype.Repository;

//替换xml文件的<bean id="userDao" class="com.lyx.entity.UserDao"></bean>
@Repository("userDao")//由于是Dao层,把@Component替换成@Repository
public class UserDaoImpl implements UserDao{
    public User queryUserById(int id){
        //数据库查询
    }
}

3.2 注解替换Service层


//替换xml文件的<bean id="userService" class="com.lyx.entity.UserService"></bean>
@Service("userService")//由于是Service,把@Component替换成@Service
public class UserServiceImpl implements UserService{
    
    @Resource(name="userDao")//跟Dao注解对应,替换原先注解@Autowired、@Qualifier("userDao")
    private UserDao userDao;
    public User queryUserById(int id){
        userDao.queryUserById(id);
    }
    //get和set方法也可以不写,
    
}

3.3 注解替换数据源

<?xml version="1.0" encoding="utf8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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 "
>
    
    <!--    placeholder占位符-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClass}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="${jdbc.init}"/>
        <property name="maxWait" value="60000"/>
        <property name="timeBetweenEvictionRunsMillis" value="50000"/>
        <property name="minEvictableIdleTimeMillis" value="3000"/>
    </bean>
    <context:component-scan base-package="com.lyx"/>
</beans>

DataSourceConfiguration.java

//标志该类是Spring的核心配置类
@Configuration
//替换xml文件的<context:property-placeholder location="classpath:jdbc.properties"/>
@PropertySource("classpath:jdbc.properties")
//替换xml文件的组件扫描<context:component-scan base-package="com.lyx"/>
@ComponentScan("com.lyx")
public class DataSourceConfiguration{
    @Bean("dataSource")//Spring会将当前方法的返回值以指定名称存储到Spring容器中
    public DataSource getDataSource() throws PropertyVetoException{
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("${jdbc.driverClass}");
        dataSource.setUrl("${jdbc.url");
        dataSource.setUsername("${jdbc.username}");
        dataSource.setPassword("${jdbc.password}");
        return dataSource;
    }
}
  • 把上面的DataSourceConfiguration.java配置类,import导入SpringConfiguration.java类文件
@Configuration
@Import({DataSourceConfiguration.class})
public class SpringConfiguration{
    
}
举报

相关推荐

Spring 注解开发

Spring注解开发

spring注解开发(7)

14.0、Spring注解开发

Spring纯注解开发

注解开发Spring AOP

Spring 注解开发详解

0 条评论