栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-12-24 Spring常用核心配置及注解使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-12-24 Spring常用核心配置及注解使用

Spring核心配置

文章目录
  • Spring核心配置
      • 1.头文件
      • 2.Bean注入
        • 2.1、set注入
        • 2.2 、p命名空间注入
        • 2.3、构造注入
        • 2.4、集合属性注入
      • 3.spring-jdbc配置
        • 3.1、加载属性文件
        • 3.2、配置dataSource数据源对象
        • 3.3、配置jdbcTemplate模板对象
      • 4.Spring的IOC注解开发
        • 4.1.@Component
        • 4.2.@Repository
        • 4.3.@Service
        • 4.4.@Controller
        • 4.5.@Autowired
        • 4.6.@Qualifier
        • 4.7.@Resource
        • 4.8.@Value
        • 4.9.@Configuration
        • 4.10.@ComponentScan
        • 4.11.@import
        • 4.12.@PropertySource
        • 4.13.@Bean
        • 4.14.@RunWith
        • 4.15.@ContextConfiguration
        • 4.16.Spring-JDBC零配置
        • 4.17.Spring集成Junit单元测试
      • 5.Spring的Aop配置
      • 6.Spring的Aop注解开发
        • 6.1.Spring的Aop注解开发核心配置文件
        • 6.2.aop常用注解
      • 7.Spring声明式事务配置
        • 1.配置数据源对象
        • 2.在spring核心配置文件配置事务管理对象
        • 3.配置事务的增强(通知)
        • 4.配置事务的织入
      • 8.Spring事务的注解开发
        • 1.配置数据源对象
        • 2.配置事务管理对象
        • 3.配置事务注解驱动
        • 4.配置组件扫描
        • 5.@Transactional
      • 9.Spring核心配置总结(注解开发)

1.头文件



2.Bean注入 2.1、set注入



     
    
        <!–普通数据类型注入–">>
        
        
    


    
        
        
    


    
    


2.2 、p命名空间注入
 xmlns:p="http://www.springframework.org/schema/p"
 	
    
2.3、构造注入
   
    
        
    
2.4、集合属性注入
     
 	
        
        
    
    
        
        
    

    
        
            
                aaa
                bbb
                ccc
            
        
        
            
                
                
            
        
        
            
                111
                222
            
        
    
3.spring-jdbc配置

需要用到的命名空间context




3.1、加载属性文件
 
    
3.2、配置dataSource数据源对象
    
        
        
        
        
    
3.3、配置jdbcTemplate模板对象
    
        
    
4.Spring的IOC注解开发 4.1.@Component
@Component("userDao")
//将类注入到spring的IOC容器中,作用等同于下面配置
//
4.2.@Repository

数据层注解,作用等同于@Component

4.3.@Service

业务层注解,作用等同于@Component

4.4.@Controller

控制层注解,作用等同于@Component

4.5.@Autowired

根据数据类型自动从spring容器中获取对象

4.6.@Qualifier
	//
    @Autowired//根据数据类型自动从spring容器中获取对象
    @Qualifier("user")//根据名称id注入对象,需要与@Autowired一起使用
4.7.@Resource
@Resource(name = "user")//根据id注入对象,效果等于上面两个相加
4.8.@Value

注入属性值

@Value("zhangsan")
private String name;
@Value("${age}")//值的注入可以通过配置文件中的键值从spring中获取
4.9.@Configuration

声明spring核心配置类

4.10.@ComponentScan

组件扫描

//配置组件扫描
// 
@ComponentScan("com.li")
4.11.@import
//导入数据源配置类//
@import({DataSourceConfiguration.class})
4.12.@PropertySource
//加载配置文件
//
@PropertySource("classpath:jdbc.properties")
4.13.@Bean

用在方法上,方法返回值bean对象会自动交给IOC容器。

//配置bean,将该方法返回值存入spring容器中
@Bean("dataSource")
4.14.@RunWith
//spring集成junit测试
@RunWith(SpringJUnit4ClassRunner.class)
4.15.@ContextConfiguration
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = SpringConfiguration.class)
4.16.Spring-JDBC零配置

1.数据源配置类

加载属性文件,并创建数据源对象交给spring容器

package com.li.cofig;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

//数据源配置类
//加载配置文件
//
@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;


    //配置bean,将该方法返回值存入spring容器中
    @Bean("dataSource")
    public DataSource getDataSource() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

2.Spring核心配置类

代替spring’核心配置文件

package com.li.cofig;

import org.springframework.context.annotation.*;

//声明Spring核心配置类
@Configuration
//配置组件扫描
// 
@ComponentScan("com.li")
//导入数据源配置类
//
@import({DataSourceConfiguration.class})
public class SpringConfiguration {

}

4.17.Spring集成Junit单元测试
//spring集成junit测试
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = SpringConfiguration.class)
public class SpringJunitTest {

    @Autowired
    private UserService userService;

    @Autowired
    private DataSource dataSource;

    @Test
    public void test1() throws SQLException {
        userService.save();
        System.out.println(dataSource.getConnection());
    }
}

5.Spring的Aop配置

1.切面类

//切面类
public class MyAspect {

    //增强方法
    @Before("execution(* com.li.aop.*.*(..))")//前置增强
    public void before(){
        System.out.println("前置增强。。。。。");
    }

    public void afterReturning(){
        System.out.println("后置增强。。。。。");
    }

    //Proceesing JoinPoint 正在执行的xxx切点方法
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前增强。。。。。");
        Object proceed = pjp.proceed();//切点方法
        System.out.println("环绕后增强。。。。。");
        return proceed;
    }

    public void  afterThrowing(){
        System.out.println("异常抛出增强。。。。。");
    }

    public void after(){
        System.out.println("最终增强。。。。。");
    }
}

2.需要被增强的方法

public class Target  implements TargetInterface{
    //需要被增强的方法
    @Override
    public void save() {
        System.out.println("save running......");
    }
}

3.核心配置文件




    
    

    
    


    
    
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    


6.Spring的Aop注解开发 6.1.Spring的Aop注解开发核心配置文件

需要配置aop自动代理,和组件扫描,否则无法识别aop注解





    
    

    
    



6.2.aop常用注解
@Aspect  //声明为一个切面类
@Before("execution(* com.li.aop.anno.*.*(..))")//前置增强
@Around("pointcut()")//环绕增强
@After("MyAspect.pointcut()")//后置增强
@Pointcut("execution(* com.li.aop.anno.*.*(..))")//定义切点表达式
@Component("myAspect")//将切面类交给spring
@Aspect//切面类
public class MyAspect {

    //增强方法
    @Before("execution(* com.li.aop.anno.*.*(..))")//前置增强
    public void before(){
        System.out.println("前置增强。。。。。");
    }

    public void afterReturning(){
        System.out.println("后置增强。。。。。");
    }

    //Proceesing JoinPoint 正在执行的xxx切点方法
    @Around("pointcut()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前增强。。。。。");
        Object proceed = pjp.proceed();//切点方法
        System.out.println("环绕后增强。。。。。");
        return proceed;
    }

    public void  afterThrowing(){
        System.out.println("异常抛出增强。。。。。");
    }

    @After("MyAspect.pointcut()")
    public void after(){
        System.out.println("最终增强。。。。。");
    }

    //定义切点表达式
    @Pointcut("execution(* com.li.aop.anno.*.*(..))")
    public void pointcut(){}
}

7.Spring声明式事务配置 1.配置数据源对象
  
    

    
    
        
        
        
        
    

    
    
        
    
2.在spring核心配置文件配置事务管理对象
   
    
3.配置事务的增强(通知)
    
        
        
            
            
            
            
        
    
4.配置事务的织入
  
    
        
        
    
8.Spring事务的注解开发 1.配置数据源对象
    
    

    
    
        
        
        
        
    

    
    
        
    
2.配置事务管理对象
 
    
        
    
3.配置事务注解驱动
    
    
4.配置组件扫描
 
    
5.@Transactional

使用@Transactional注解,此注解如果加到类上,则表示作用于此类所有方法上,如果加到方法上,则表示作用于该方法,如果类和方法都有,则就近原则。

@Service("accountService")
//类上的事务注解作用于此类中所有方法,如果方法也有,则就近原则
@Transactional(isolation = Isolation.REPEATABLE_READ)
public class AccountServiceImpl implements AccountService {

    @Autowired
    private AccountDao accountDao;

    @Override
    @Transactional(isolation = Isolation.REPEATABLE_READ,propagation = Propagation.REQUIRED)//就近原则
    public void transfer(String inMan, String outMan, int money) {
        accountDao.out(outMan,money);
        //int a=1/0;
        accountDao.in(inMan,money);
    }
}

9.Spring核心配置总结(注解开发)
 
    
    
    
        
        
        
        
    

    
        
    

    


   
    



  
    

 
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677735.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号